如何使用SDL在OpenGL 2.0中制作纹理全屏四核?

时间:2011-12-03 21:19:29

标签: opengl sdl

简单的任务:绘制带纹理的全屏四边形,仅此而已,因此我们可以确保纹理将填满整个屏幕空间。 (我们稍后会做更多的着色魔术。)

使用简单的片段着色器绘制全屏四边形很容易,但现在我们被困一整天试图使其纹理化。我们阅读了大量的教程,但它们都没有帮助我们。关于的主要使用 1.x,那些关于OpenGL 2.0的不是关于纹理或SDL。 :(

代码为here。一切都在colorLUT.c,片段着色器在colorLUT.fs。结果是与图像大小相同的窗口,如果您在着色器中注释最后一行,则会获得漂亮的红色/绿色渐变,因此着色器很好。

1 个答案:

答案 0 :(得分:3)

  1. 与OpenGL 1.4相比,纹理初始化没有改变。教程将正常工作。
  2. 如果片段着色器有效,但您没有看到纹理(并获得黑屏),则纹理加载被破坏或纹理未正确设置。禁用着色器,并尝试使用固定功能功能显示纹理多边形。
  3. 在尝试初始化纹理之前,您可能需要调用glPixelStorei(GL_UNPACK_ALIGNMENT, 1)。默认值为4.
  4. 将纹理与屏幕对齐的更简单方法是添加顶点着色器并传递纹理坐标 - 而不是尝试使用gl_FragCoord计算它们。
  5. 你将表面尺寸传递给“分辨率”制服。这是一个错误。您应该传递视口大小。
  6. 您可能想要生成mipmap。您可以自己生成它们,也可以使用GL_GENERATE_MIPMAPS,因为它在OpenGL 2中可用(但在以后的版本中已弃用)
  7. OpenGL.org有OpenGL 2.0和GLSL 1.5的规范。如有疑问,请下载并作为参考使用。
  8. NVIdia OpenGL SDK包含您可能需要检查的示例 - 它们包含着色器。
  9. 还有“OpenGL橙皮书”(OpenGL着色语言)专门处理着色器。
  10. 下次包含有问题的代码。