c++ - OpenGL 3.x核心sampler2DRect (GL_TEXTURE_RECTANGLE)示例

标签 c++ opengl sfml opengl-3

我正在尝试弄清楚如何在我的 3D 场景上制作半透明的 2D 叠加,请阅读 OpenGL SuperBible 第 5 版作为引用。

它有一个示例,使用纹理目标 GL_TEXTURE_RECTANGLE 和一个名为sampler2DRect 的 GLSL 统一类型将 OpenGL Logo 覆盖在场景上(在第 7 章中)。纹理应该使用texture()命令显示在片段着色器中。

本书中的示例使用了许多源文件,我很难在一个简单的程序中实现它,所以我想知道是否有人可以向我指出一个更简单的 Sampler2DRect 示例。

我对切换到正交投影的部分没有任何问题,相反,当我尝试加载纹理时,它只是将表面显示为白色。此时我的代码变得非常困惑,而且我似乎无法查明问题,因此我宁愿从头开始,遵循一个更简单的示例(如果任何地方都有)。

附注我正在使用 SFML 2.0rc 来加载图像文件,以防万一。

最佳答案

error C1101: ambiguous overloaded function reference "mul(mat4, vec3)" 
     (0) : mat3x4 mul(mat3x1, mat1x4)
     (0) : mat3 mul(mat3x1, mat1x3) 
     (0) : mat3x2 mul(mat3x1, mat1x2) 
     (0) : mat3x1 mul(mat3x1, mat1) 
     (0) : mat2x4 mul(mat2x1, mat1x4) 
     .....

这是一种非常冗长的方式,告诉您不存在将 mat4vec3 相乘的函数。然后它列出了 mul 的所有合法变体。

矩阵相乘时,维度必须匹配,您可能想要的是将 mat4vec4 相乘。如果这是您的位置坐标,则添加 1.0 作为 vector 的最终值:

uniform mat4 mvpMatrix;
in vec3 position;

main()
   gl_Position = mvpMatrix * vec4(position, 1.0);

关于c++ - OpenGL 3.x核心sampler2DRect (GL_TEXTURE_RECTANGLE)示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12047138/

相关文章:

c++ - 使用空着色器程序绘制是否有效?

c++ - string.find() 不返回 -1

OpenGL鼠标选取策略

c++ - 在opengl中用线程绘制顶点

c++ - 计算定向运动的算法

c++ - 在不使用虚函数的情况下覆盖对 C++ 中基类的调用?

c++ - 派生类构造函数初始化列表中的多重继承和继承数据成员

c++ - 如何将 glm::vec4<float> 转换为 GLfloat*?

c++ - 如何在SFML中使用俄语文本?

c++ - 为什么 SFML 中的 sf::Clock 会自行重置?