python - OpenGL:法线贴图(凹凸贴图)的哪些着色器?
问题描述
我找不到在 PyOpenGL 中生成法线/凹凸贴图的方法。具体来说,我想要一张我可以阅读的地图glReadPixels()
。我不知道如何获得表格的地图:(宽度,高度,法线)即形状应该是(wxhx 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)
解决方案
推荐阅读
- ios - 无法在 Xcode 中归档应用以供提交
- seo - 仅允许 Googlebot 将所有内容编入索引
- javascript - 从节点服务器检索值后在 Pug(Jade) 中发出警报
- java - 自定义 Spring Boot 启动器中是否可以有默认的 application.yml?
- angular - Angular - Jasmine - 如何测试间隔内的动作
- spreadsheet - Google Docs - 将日期转换为一年中的某一天
- postgresql - 如何使用 PostgreSQL 中的 SQLAlchemy 可重复地查询随机行?
- firebase - 群组的 Firebase 存储安全规则
- reactjs - 当我更新 MERN 堆栈中的记录时,它会删除对象
- php - 从 YAML 文件加载自定义配置块