Qt CMake

cmake_minimum_required(VERSION 3.5)project(07_TCP LANGUAGES CXX)# 将编译目录包含到Include目录 set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON)set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON)# 根据 Qt 版本的环境变量,设置使用的 Qt 版本 set(CMAKE_PREFIX_PATH $ENV{QTDIR5141_64})set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_STANDARD_REQUIRED ON)# QtCreator supports the following variables for Android, which are identical to qmake Android variables. # Check http://doc.qt.io/qt-5/deployment-android.html for more information. # They need to be set before the find_package(Qt5 ...) call. #if(ANDROID) # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") # if (ANDROID_ABI STREQUAL "armeabi-v7a") # set(ANDROID_EXTRA_LIBS # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so) # endif() #endif() # 工程中会用到的Qt模块 find_package(Qt5 COMPONENTS Widgets Network REQUIRED)if(ANDROID) add_library(07_TCP SHARED main....

July 15, 2022 · 1 min · Rick Cui

OpenGL Shading Frequencies

July 10, 2022 · 0 min · Rick Cui

OpenGL 纹理采样

有两个不同的概念:像素(Pixel)和纹素(Texel) 在纹理上查询纹素有两种方式: 点查(Point Query):小纹理,而要对纹理放大 范围查(Range Query):动态生成 Mipmap 小纹理:低分辨率纹理应用到高分辨率设备,会产生马赛克问题 Nearest:邻近点 Bilinear:双线性插值 Bicubic: 大纹理:高分辨率纹理应用到低分辨率设备,会有 锯齿(Jaggies) 和 摩尔纹(Moire) 等 走样(Aliasing) 的问题 多重采样(supersampling) 面采样求平均值 Mipmap:图像金字塔 具有速度快、只是近似值且只能是方形范围的特点 会额外占用 1/3 的原始纹理显存空间,总共 4/3 的显存占用 三线性插值(Trilinear interpolation): 先在相邻两层 Mipmap 中分别进行 Bilinear 插值,再在结果之上进行线性插值 局限性:会存在 overblur 的问题 各项异性过滤(Anisotropic Filtering)(Ripmap): 对于平行于坐标轴的矩形区域查询有较好的表现,但是对于非矩形区域仍是效果不佳 会额外占用 3 倍的显存空间 纹理映射的不规则区域 EWA Filtering:...

July 10, 2022 · 1 min · Rick Cui

OpenGL 重心坐标与插值

重心坐标在投影下不是不变的,所以如果要获取光栅化后三角形内部像素点的深度,不能使用光栅化后三角形的重心坐标进行插值,而是要先找到像素点中心位置对应的三维世界的三维坐标,在三维世界中进行深度插值计算。 参考: 利用重心坐标平滑插值三角形顶点的任何属性 GAMES101-现代计算机图形学入门-闫令琪

July 9, 2022 · 1 min · Rick Cui

Unreal——像素流送播放器页面与 UE 通信

一、HTML 页面 必须包含 webRtcPlayer.js 脚本文件,该文件处理浏览器和虚幻引擎应用间的通信,接受并显示来自服务器的媒体流。在非必要的情况下,请勿修改此JavaScript文件。 <script type="text/javascript" src="scripts/webRtcPlayer.js"></script> 建议包含 app.js 脚本文件,此文件将设置处理键盘、鼠标和触摸事件的事件监听器,其还包含数个可在播放器页面使用的函数。 <script type="text/javascript" src="scripts/app.js"></script> 页面必须含有一个 ID 为 player 的 div 元素。该元素可被流送自 UE4 应用的视频帧所替换。 <div id="player"></div> 页面加载时必须调用 app.js 文件提供的 load 函数。 二、访问像素流送蓝图 API 在虚幻引擎中运行的像素流送插件会公开一个蓝图API,可在 gameplay 逻辑中使用该 API 处理播放器 HTML 页面发送的自定义 UI 事件,并将事件从虚幻引擎发送到播放器页面,实现网页客户端与 UE 运行程序之间的交互通信。 推荐将 像素流送插件(Pixel Streaming Input) 组件添加到 PlayerController 中。 三、从播放器页面到 UE 的通信 app.js 文件提供两个可在 HTML 播放器页面进行调用的 JavaScript 函数,以便用户从浏览器向虚幻引擎程序发送事件和命令:emitCommand 和 emitUIInteraction 函数。 js 代码: // 从播放器页面到UE4的通信 let testButton = document....

July 8, 2022 · 1 min · Rick Cui