opengl-4相关内容

OpenGL 4.1 和 3.1+,主要区别是什么?

我知道 OpenGL 4 和 3 非常相似,尤其是 3.1 和 4.1.由于两者基本上是一起发布的,因此很难理解 OpenGL 4.0/4.1 的基本原理. 在以前的 OpenGL 版本中,次要版本向上递增,直到实质性更改累积到新的主要版本中.OpenGL 3.x 和 4.x 引入了向后不兼容的 API 更改,然后据说 OpenGL 3.2 和 3.3 是 3 系列的特定分支,不向前兼容,而 ..
发布时间:2021-11-25 02:06:43 C#

使用 3D 纹理时结果不正确

我使用的是现代 OpenGL 4.3 核心. 我刚刚意识到 1024p x 1024p 图块集对于我的需要来说太小了.所以,我用 1024p x 1024p x 4p 3D 纹理替换了它.(我知道,这不是最好的解决方案,我最好使用 2D 纹理数组.我只是想知道为什么我当前的解决方案不起作用.) x 和 y 纹理坐标工作正常,和以前一样.z 也可以使用,但有点不正确.我希望第一层有 z ..
发布时间:2021-11-25 01:14:32 C#

对于制服和顶点属性,OpenGL 索引和位置是否相同?

在 OpenGL 参考页面中,一些函数被标记使用统一位置,而其他函数被标记为使用统一指数.这些是同一回事吗? 与顶点属性类似,一些函数被标记为使用顶点属性索引,而 other 函数被标记为使用顶点属性位置.这些都一样吗? 解决方案 在你的第一种情况下,Uniform 的 location 与 index 不同>glGetActiveUniform(). 对于 glGetActi ..
发布时间:2021-06-12 20:08:07 其他开发

正交光栅化中的近/远平面和 z

我编写了大量着色器,但我偶然发现了一些我以前从未意识到的东西. 我需要一个带有简单正交投影的顶点 + 片段着色器,没有深度测试. 相机与原点对齐. 我禁用了 GL_DEPTH_TEST,并屏蔽了深度写入.事实如此简单,以至于我决定我什至不需要投影矩阵.以我完全的无知和独创性,我认为对于任何三角形顶点,顶点着色器只会将 x,y(,z = ,w = 1) 传递给片段着色器. 我 ..
发布时间:2021-06-12 20:07:04 其他开发

OpenGL glMultiDrawElementsIndirect 与交错缓冲区

最初使用glDrawElementsInstancedBaseVertex 来绘制场景网格.所有网格顶点属性都在单个缓冲区对象中交错.总共只有 30 个独特的网格.所以我已经用实例计数等调用了 30 次绘制,但现在我想使用 glMultiDrawElementsIndirect 将绘制调用批处理为一个.由于我没有使用此命令功能的经验,因此我一直在到处阅读文章以了解实现,但收效甚微.(出于测试目的, ..
发布时间:2021-06-12 20:06:01 C/C++开发

OpenGL实例化渲染绘制一个三角形

我正在尝试构建体素引擎,为此,我必须创建成千上万的体素,我希望可以使用实例渲染.但是,该图是非常出乎意料的.我主要遵循的是学习OpenGL指南. 单独渲染每个体素时,程序运行良好: 但是,使用实例渲染时... 另一个角度... 我正试图大块渲染体素,所以这是我的代码: voxel.hpp #pragma一次#include#include ..
发布时间:2021-05-13 19:14:07 C/C++开发

使用计算着色器从GLSL中的一个周末进行光线跟踪的非递归ray_color函数

我正在尝试使用opengl 4.3中的计算着色器编写实时光线跟踪器.我知道这是一个相当受欢迎的问题.我已经检查了此和,但是那里提供的体系结构与我的用例并不完全对应. 我只是想转换P. Shirley的书ray_color 函数 ="nofollow noreferrer">此处. 提到的 ray_color 函数: color ray_color(const ray&r,const h ..
发布时间:2021-05-11 19:05:32 其他开发

计算着色器共享内存包含工件

我一直在尝试编写通用的计算着色器高斯模糊实现. 它基本上可以工作,但是它包含的伪像会在场景静止的情况下改变每一帧.我花了过去的几个小时来调试它.我已经尽力确保不超出范围,展开所有循环,用常量替换制服,但是工件仍然存在. 我已经在3种不同的机器/GPU(2个nvidia,1个intel)上使用工件对原始代码进行了测试,它们均产生相同的结果.通过使用普通C ++代码向前和向后执行的工作组来 ..
发布时间:2021-05-11 19:05:00 其他开发

什么时候应该在OpenGL中使用STD140?

何时将STD140用于OpenGL中的统一块? 尽管我不确定100%,但是我相信有另一种方法可以实现相同的目标,称为“共享". 这仅仅是对编码者的偏爱吗?还是有理由在一个之上使用另一个? 解决方案 统一缓冲区对象在 http://www.opengl.org/registry/specs/ARB/uniform_buffer_object.txt 可以声明统一块的数据存储 ..
发布时间:2021-05-11 19:04:24 其他开发

如何查询SSBO结构的对齐方式/步幅?

我不确定哪种结构布局最适合我的应用程序:shared,packed,std140,std430.我并不是要对每种情况进行解释,因为这些信息很容易找到,很难弄清楚每种情况对供应商兼容性/性能的影响.如果shared是默认值,我怀疑这是一个很好的起点. 据我所知,在使用shared或packed时,我必须查询对齐方式/偏移量,因为它是特定于实现的. 用于查询它的API是什么?在绑定计算着色 ..
发布时间:2020-11-16 02:04:17 其他开发

我可以在没有图形卡或MESA的计算机上编程/编译OpenGL 4.0代码吗?

我最近开始使用Redbook 8th Edition处理Open GL 4.0.从早上开始到现在,我一直无法编译OpenGL程序的"HelloWorld". 我配置了依赖项,将freeGlut/GLEW/GLSL的文件内容传输到了VS 2013 C ++ IDE的相应VC文件夹中.最终,我确信,事件分解的催化剂是发生的,因为VS在不同位置引用了多个lib文件,并且链接器无法使引用的文件首尾相 ..
发布时间:2020-05-20 23:44:55 其他开发

glVertexAttribDivisor和glVertexBindingDivisor有什么区别?

我一直在寻找将属性与任意组的顶点相关联的方法,起初,实例化似乎是实现此目的的唯一方法,但是后来我偶然发现了 但是,使用较新版本的OpenGL可能会设置某个顶点属性的缓冲区偏移增加的速率.实际上,这意味着给定顶点数组的数据在属性的缓冲区偏移量增加之前会被复制到n个顶点.设置此除数的功能是 glVertexBindingDivisor . (重点是我的) 在我看来,答案似乎是在宣称我可以 ..
发布时间:2020-05-20 23:17:50 其他开发

OpenGL 4.0 GPU绘图功能?

在Wikipedia和其他来源对OpenGL 4.0的描述中,我了解了此功能: 在没有CPU干预的情况下,绘制由OpenGL或OpenAPI等外部API生成的数据. 这是什么意思? 修改: 似乎必须引用Draw_Indirect,我 相信 ,以某种方式扩展绘制阶段,以包含着色器程序或互操作程序的反馈(基本上是OpenCL/CUDA) 在第二次运行之后,似乎有一些警告和技巧可 ..
发布时间:2020-05-20 23:08:23 其他开发

glsl双精度顶点缓冲区

如果我创建一个双精度顶点缓冲区,例如: GLuint vertBuffer, spanBuffer, spanCount, patchSize, program; // already setup glUseProgram (program); glEnableClientState (GL_VERTEX_ARRAY); glBindBuffer (GL_ARRAY_BUFFER, vert ..
发布时间:2020-05-20 22:59:11 其他开发

SSBO和图片加载/存储之间的差异

“着色器存储缓冲区对象"(SSBO)与图像加载存储操作之间的区别是什么 什么时候应该使用而不是另一个? 它们都可以有原子操作,我假设它们存储在相同类型的内存中.而且,无论它们是否存储在相同类型的内存中,它们是否具有相同的性能特征? edit:最初的问题是在SSBO与统一缓冲区对象之间询问,它本来是在SSBO与图像加载存储之间. 解决方案 着色器存储缓冲区对象和图像纹理之间 ..
发布时间:2020-05-20 22:36:28 其他开发