我找不到在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)