矩形纹理真的需要OpenGL 4.3中的GL_ARB_TEXTURE_RECTANGLE扩展吗?

时间:2014-12-25 20:12:11

标签: opengl textures

我正在寻找使用现代OpenGL逐像素渲染简单图像的最佳方式(如“最自然”或“最有效”)。

由于我不想要mip-mapping,我转向矩形纹理 - 正如我所假设的 - 这个任务的自然选择。

我很惊讶glCompileShader()拒绝接受我对片段着色器中texture2DRect()的调用,除非我启用了扩展程序GL_ARB_TEXTURE_RECTANGLE

我没想到,因为我正在使用现代OpenGL(我正在指定#version 430)而https://www.khronos.org/files/opengl44-quick-reference-card.pdf处的OpenGL参考表没有提到需要扩展。

为了增加混淆,着色器编译器接受我的统一声明uniform sampler2DRect sampler;,甚至没有警告。

这是我的OpenGL驱动程序中的错误吗? (我在Windows 8.1上运行版本340.52的NVidia驱动程序,在GeForce GTX 760上运行。)

2 个答案:

答案 0 :(得分:4)

具有类型特定名称的纹理采样函数(如texture2DRect())已全部弃用,并且在核心配置文件中不再可用。

相反,请使用texture(),它会为所有支持的纹理类型重载。仍支持矩形纹理,因此它适用于sampler2DRect类型的采样器。

答案 1 :(得分:3)

只需使用GLSL内置函数texelFetch通过绝对整数坐标来处理纹理图像像素。