我正在使用openGL,我想要做的是將我的場景渲染到紋理,然後存儲該紋理,以便我可以將其傳遞到我的片段着色器以用於渲染其他內容。在着色器中使用glTexture
我使用glGenTexture()創建了一個紋理,並將其附加到幀緩衝區,然後用glBindFrameBuffer()渲染幀緩衝區。然後我將framebuffer設置回0以回到屏幕,但現在我卡住了。
在我的片段着色器中,我有一個統一的採樣器2D'myTexture',我想用它來存儲紋理。我如何去做這件事?
對於我在網上找到.JPG/PNG圖片我只是用下面的代碼:
glUseProgram(Shader->GetProgramID());
GLint ID = glGetUniformLocation(
Shader->GetProgramID(), "Map");
glUniform1i(ID, 0);
glActiveTexture(GL_TEXTURE0);
MapImage->Bind();
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
但是這個代碼不爲我創造了glTexture工作。具體來說,我不能以同樣的方式調用myTexture-> Bind()。
謝謝!我會試試看看它是否有效。但是你從哪裏得到你的'n'變量? – user1782677
@ user1782677:我在那裏放了'n'變量,以清楚傳遞給採樣器統一體的值和紋理單元之間的關係。紋理單元GL_TEXTURE0中綁定的紋理通過值爲0的採樣器統一進行訪問(而不是GL_TEXTURE0)。 'n'可以是任何小於所使用的OpenGL實現支持的最大紋理單元數量的數值。 – datenwolf