我真的很困惑於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