opengl相关内容

如何使用OpenGL将RGBA转换为NV12?

我需要使用OpenGL着色器作为编码器输入将RGBA转换为NV12。 已经渲染了两个不同的碎片着色器,两个纹理都来自一个摄影机。使用V4L2获取相机图像(YUV)。然后,将YUV转换为RGB,让OpenGL渲染。下一步,我需要将RGB转换为NV12作为编码器输入,因为编码器只接受NV12格式。 推荐答案 使用计算着色器将rgb转换为平面yuv,然后对UV平面进行二倍的缩减采样。 ..
发布时间:2022-03-11 19:34:16 其他开发

如何在OpenGL中实现无重复顶点的平面着色?

我正在尝试使用平面着色在LWJGL OpenGL中渲染3D棱镜。例如,我有一个多维数据集索引,如下所示: 我在顶点缓冲区中只有8个顶点,我如上所述对它们进行了索引。有没有办法在立方体上实现平坦的法线着色,如下图所示?如果可能,我不想重写顶点和索引缓冲区以包括重复的顶点。 推荐答案 如果不需要任何其他属性(例如纹理坐标),则可以选择仅通过8个顶点创建具有面法向矢量的立方体网格。对法 ..
发布时间:2022-03-11 19:31:08 其他开发

带字节的着色器存储缓冲区对象

我正在使用一个计算着色器,其中的输出将写入SSBO。现在,此缓冲区的使用者是CUDA,它希望它包含无符号字节。我目前无法找到如何在SSB中为每个索引写入一个字节的方法。使用纹理或图像,规范化浮点到无符号字节的转换由OpenGL处理。例如,我可以附加内部格式为R8的纹理,并按条目存储字节。但是使用SSBO不可能做到这一点。是吗 实际上,我希望能够做到以下几点: 计算着色器: #ve ..
发布时间:2022-03-01 17:30:51 其他开发

如何在质心计算光线的情况下实现平面着色?

我想编写一个GLSL着色器程序,用于逐面着色。我的第一次尝试使用flat插值限定符和触发顶点。我对法线和位置顶点属性都使用平面插值,这为我提供了所需的实心绘制曲面的老式效果。 虽然渲染看起来正确,但着色器程序实际上没有正确执行工作: 灯光计算仍以每个碎片为基础(在碎片着色器中), 位置矢量取自挑衅顶点,而不是三角形的质心(对吗?)。 是否可以对三角形的质心应用一次照明公式,然后 ..
发布时间:2022-03-01 17:20:16 其他开发

查找支持的GLSL版本

怎样才能找到OpenGL实现支持的GLSL版本,并且能够可靠地以编程方式使用? 是获取GL_SHADING_LANGUAGE_VERSION字符串并尝试解析它的最佳方式吗?它能可靠地以定义良好的格式返回吗?我的英特尔驱动程序返回1.20,这很容易解析,但我的nvidia卡返回4.20 NVIDIA via Cg compiler。是否可以信任它与(d+).(d+)( .*)?正则表达式匹配?Th ..
发布时间:2022-03-01 17:14:14 其他开发

gl_FragCoord的范围是多少

gl_FragCoord.xy的范围是多少?我知道gl_FragCoord是屏幕坐标,但实际范围是多少?( 0, width - 1 )还是( 1, width )?当我进行基于碎片coord的计算时,如果我做了类似gl_FragCoord.x - 5的操作,GLSL编译器会生成什么类型的错误(如果有的话)? PS:我不需要规范化。 推荐答案 gl_FragCoord坐标从0开始 ..
发布时间:2022-03-01 17:10:59 C/C++开发

如何在GLSL中渲染无限的2D网格?

理想情况下,我想要做的是绘制一个四边形,并让GLSL处理实际网格线的创建。 到目前为止,我尝试使用顶点着色器: #version 400 layout (location = 0) in vec4 in_position; layout (location = 2) in vec3 in_UV; uniform mat4 model; uniform mat4 view; unif ..
发布时间:2022-03-01 17:02:09 其他开发

GLSL将uint转换为浮点颜色

对于我的程序,我希望将数据作为无符号字节传递到顶点着色器,然后将这些字节转换为浮点值(介于0.0和1.0之间),用于顶点着色器中的颜色,如下所示: #version 330 core layout (location = 0) in uvec3 aPos; layout (location = 1) in uvec4 aColor; out VS_OUT { vec4 color; ..
发布时间:2022-03-01 16:58:40 C/C++开发

我有一个只有1盏灯的公式,但我需要2盏灯

我正在从头开始做一个引擎(不是出于我自己的自由意志OFC),我需要在我的对象至少有2个独立光源的地方做它。对于此公式,我使用vertex.shader和Fragment.shader。遗憾的是,此公式只能显示一个光,但如上所述,我需要使公式至少显示2个光。 这是Vertex.shader: layout(location = 0) in vec4 vPosition; layout(l ..
发布时间:2022-03-01 16:53:05 其他开发

GtKGLArea无法创建OpenGL 2.1上下文

我目前正在为我的游戏引擎项目开发一个简单的编辑器,虽然该项目似乎在我的主工作站(GTX 650Ti,支持OpenGL 3.3+)上运行得很好,但当im在我的测试桌面(GMA4500,支持OpenGL 2.1+)上测试它时,它似乎被损坏了。 即使我将总账版本gtk_gl_area_set_required_version()指定为2.1,GtkGLArea的gtk_gl_area_make_c ..
发布时间:2022-02-27 15:31:40 其他开发

如何在平移/旋转后重新计算轴对齐边界框

当我第一次加载对象时,我使用最大和最小(x,y,z)点计算初始AABB。但这是在对象空间中,对象在世界各地移动,更重要的是旋转。 如何在每次平移/旋转对象时重新计算新的AABB?这基本上发生在每一帧中。每一帧重新计算新的AABB会是一项非常密集的操作吗?如果是,还有什么替代方案? 我知道AABB会降低冲突检测的精确度,但实现冲突检测代码比OBB更容易,我想一步一步来。 以下是我从以下 ..
发布时间:2022-02-21 12:54:20 C/C++开发

没有递归光线追踪就不可能实现反射和折射?

我正在使用 GLSL 计算着色器编写基于 GPU 的实时光线追踪渲染器.到目前为止,它工作得非常好,但是当涉及同时具有反射和折射时,我偶然发现了一个看似无法解决的问题. 我的逻辑告诉我,为了在物体(例如玻璃)上产生反射和折射,光线必须分成两股,一条光线从表面反射,另一条光线通过表面折射.然后,这些光线的最终颜色将根据某些函数进行组合,并最终用作光线源自的像素的颜色.我遇到的问题是我无法在着色 ..
发布时间:2022-01-30 16:22:13 C/C++开发

Qt debian/ubuntu:无法编译,错误:找不到-lGL

我在 Debian 上使用 Qt 构建应用程序时遇到问题. 当我尝试编译我得到的任何东西时: /usr/bin/ld: 找不到 -lGLcollect2:错误:ld 返回 1 个退出状态make: *** [测试] 错误 114:38:52:处理“/usr/bin/make" zakończył się kodem wyjściowym 2. 最后一行的意思是:Procces(. ..
发布时间:2022-01-24 22:52:07 C/C++开发

简单的 OpenGL GUI 框架用户交互建议?

我正在从头开始设计一个简单的 GUI 框架作为一个项目,使用 OpenGL 而没有其他任何外部设备,并且需要一些关于如何实现用户交互的建议. 基本上,我有一个基类 GUIItem,所有元素都从该基类继承.这为每个项目提供了一些基本变量,例如位置、包含子元素的向量以及一些用于鼠标移动和单击的基本函数. 所有元素都如上设置,以及它们的相关成员变量. 我正在努力解决的是如何正确实现用户 ..
发布时间:2022-01-22 19:29:05 C/C++开发

QML/Qt3D GeometryRenderer 使用基本示例

我正在寻找如何在 QML 中使用 GeometryRenderer 设置实体的基本示例. 我现在使用的代码如下所示.如果我将 geometryRenderer 替换为 CuboidMesh,则会显示一个空白立方体.目标是显示一个简单的三角形.我的 GeometryRenderer 声明是否正确? 实体{材料{编号:simpleMaterial效果:SimpleEffect{}}几何渲染器{ ..
发布时间:2022-01-19 23:31:03 其他开发