我真的很困惑于OpenGL中的所有类型格式。我基本上想创建一个我可以写整数的纹理,也可以从中读取整数。我试过以下内容:如何在OpenGL中将整数写入纹理缓冲区
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32I, bufferRes.x, bufferRes.y, 0, GL_RED, GL_INT, NULL);
这给了我一个“无效的操作”错误。如果我将GL_R32I
更改为GL_RED
,我不会收到此错误。但是不是GL_R32I
正确的格式?如果不是,这是为了什么?
另外,如果我想在着色器为花车阅读本的质感,我知道,在我使用的16位整数我做了另一种情况:
glTexImage2D(GL_TEXTURE_2D, 0, GL_R16_SNORM, width, height, 0, GL_RED, GL_SHORT, NULL)
这是做正确的方法。但是没有GL_R32_SNORM
。我真的很困惑所有这些,因为我记得GL_R16I
工作,但GL_R32I
不是。
什么是您的硬件?可能您的硬件不支持内部格式“GL_R32I”。 – Rabbid76
@Rabbid它支持它,事实证明我对第7个参数的格式不正确,应该是GL_RED_INTEGER而不是GL_RED。如果对任何人有任何帮助,我都会添加一个答案。 – Zebrafish