OpenGL:法线贴图(凹凸贴图)使用哪些着色器?

时间:2019-09-25 17:38:28

标签: python opengl glsl pyopengl bump-mapping

我找不到在PyOpenGL中生成法线/凹凸贴图的方法。具体来说,我想要一张可以用glReadPixels()阅读的地图。我不知道如何获取以下形式的地图:(宽度,高度,法线),即形状应为(w xh x 3)。

如何获得此类地图?为此需要哪个片段,顶点,几何着色器?

我向顶点着色器提供以下输入:

layout (location = 0) in vec3 vertexPosition_modelspace;
layout (location = 1) in vec3 normal;

uniform mat4 ModelMatrix;
uniform mat4 ViewMatrix;
uniform mat4 ProjectionMatrix;

我想获得一个平滑的法线贴图,其中每个像素都对应一个标准化的法线矢量。我需要哪些着色器? 我需要做的是从场景渲染法线贴图。我使用行进立方体来获取三角形,法线和顶点。我添加了一个普通的缓冲区。我没有纹理。

NormalBuffer = glGenBuffers(1)
print(NormalBuffer.shape)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, NormalBuffer)
glBufferData(GL_ELEMENT_ARRAY_BUFFER, normal_arrays[i], GL_STATIC_DRAW)
normal_buffers[i] = NormalBuffer

我用它来绘制三角形并绑定缓冲区对象。

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, normal_buffers[i])
glVertexAttribPointer(1,           
                      3,      
                      GL_FLOAT,     
                      GL_FALSE,     
                      0,            
                      None)         

glDrawElements(GL_TRIANGLES,
               index[1]*index[0],
               GL_UNSIGNED_INT,
               None)

是否可以使用着色器渲染法线贴图,怎么做?可以这样阅读吗?

glReadPixels(0, 0, height, width, GL_RGB, GL_UNSIGNED_INT)

0 个答案:

没有答案
相关问题