c++ - 是否可以从着色器获取数据

标签 c++ opengl glsl shader

我想做的是在平移、旋转、缩放后获取顶点的Position,并在平移、旋转、缩放后获取Normal方向,然后将值传递给我的 C++ 应用程序,这可能吗?

最佳答案

可能是,但最优雅的方法取决于可用的 OpenGL 版本配置文件。最优雅的解决方案是顶点变换反馈 https://www.opengl.org/wiki/Transform_Feedback

如果您没有 VTF,则必须将信息写入帧缓冲区(在片段缓冲区对象中)以进行回读(这当然会阻止您看到“图像”,但只会为您提供颜色编码信息).在 GL_POINTS 模式下渲染,使用 gl_VertexID 设置片段位置,将转换后的数据传递给片段着色器并让片段着色器将其写入正确的颜色 channel 。

关于c++ - 是否可以从着色器获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340975/

相关文章:

c++ - Mac OSX 下的 TCHAR 和 _tprintf

c++ - 如何使用 OpenGL 创建位图的实体挤压?

c++ - 带有继承的 Pimpl 成语

c - 如何在 qt creator 中为 gcc 添加选项?

opengl - 如何将 int 转换为 const GLvoid*?

python - 3D 纹理的 OpenGL 4.2+ 和 shader_image_load_store 不起作用?

java - OpenGL-GLSL纹理()调用: 1282 Invalid Operation

glsl - 在 WebGL 的一个着色器中使用 sampler2D 和 samplerCube

c++ - 预序列化原始消息的某些字段

c++ - 使用限定类型实例化的模板内函数的名称解析