GLSL教程 OpenGL Setup for GLSL 综述
2010-12-22 16:15
337 查看
本节OpenGL Setup for GLSL假定你已经有了一个顶点着色器和一个片段着色器,并且你想在OpenGL应用程序中使用它们。如果还不会自己编写着色器,你可以从Internet上得到很多的着色器。不妨访问下橙宝书的站点。着色器开发工具Shader Designer和Render Monkey也有大量的着色器例子。
在OpenGL中设置着色器应用的流程类似于编写一个C程序。每个着色器类似于一个C模块,就像在C语言中一样,每个着色器都必须单独编译。然后,这些将这些编译好的着色器链接到一个程序中。
本教程兼顾ARB扩展和OpenGL2.0。如果你了解OpenGL扩展和高于1.1版本的OpenGL,我建议你使用GLEW。因为GLEW可以让你立刻使用新的函数,所以GLEW大大简化了扩展和新版OpenGL的使用。
如果你的开发环境不支持OpenGL2.0,那么你需要添加两个扩展:
GL_ARB_fragment_shader GL_ARB_vertex_shader
下面给出了一个GLUT小程序,该程序使用GLEW检测上面提到的两个扩展是否存在:
如果你想检测OpenGL2.0是否可用,请使用如下的程序:
下图展示了创建着色器的必要步骤(以OpenGL 2.0语法),我们将在后续章节详述在这里使用的函数。
下一小节,我们将详述创建着色器程序的步骤。
【上一节:片段处理器】 【下一节】
在OpenGL中设置着色器应用的流程类似于编写一个C程序。每个着色器类似于一个C模块,就像在C语言中一样,每个着色器都必须单独编译。然后,这些将这些编译好的着色器链接到一个程序中。
本教程兼顾ARB扩展和OpenGL2.0。如果你了解OpenGL扩展和高于1.1版本的OpenGL,我建议你使用GLEW。因为GLEW可以让你立刻使用新的函数,所以GLEW大大简化了扩展和新版OpenGL的使用。
如果你的开发环境不支持OpenGL2.0,那么你需要添加两个扩展:
GL_ARB_fragment_shader GL_ARB_vertex_shader
下面给出了一个GLUT小程序,该程序使用GLEW检测上面提到的两个扩展是否存在:
#include #include void main(int argc, char **argv) { glutInit(&argc, argv); ... glewInit(); if (GLEW_ARB_vertex_shader && GLEW_ARB_fragment_shader) printf("Ready for GLSL/n"); else { printf("Not totally ready :( /n"); exit(1); } setShaders(); glutMainLoop(); }
如果你想检测OpenGL2.0是否可用,请使用如下的程序:
#include #include void main(int argc, char **argv) { glutInit(&argc, argv); ... glewInit(); if (glewIsSupported("GL_VERSION_2_0")) printf("Ready for OpenGL 2.0/n"); else { printf("OpenGL 2.0 not supported/n"); exit(1); } setShaders(); glutMainLoop(); }
下图展示了创建着色器的必要步骤(以OpenGL 2.0语法),我们将在后续章节详述在这里使用的函数。
下一小节,我们将详述创建着色器程序的步骤。
【上一节:片段处理器】 【下一节】
相关文章推荐
- GLSL教程 OpenGL Setup for GLSL 故障排除:the InfoLog
- GLSL教程 OpenGL Setup for GLSL 清理
- GLSL教程 OpenGL Setup for GLSL 创建着色器
- GLSL教程 OpenGL Setup for GLSL 创建着色器程序
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- 【GLSL教程】在OpenGL中向shader传递信息
- 【GLSL教程】(二)在OpenGL中使用GLSL
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- 【GLSL教程】(二)在OpenGL中使用GLSL
- 【GLSL教程】(二)在OpenGL中使用GLSL
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- OpenGL 4.0 GLSL 基础 教程 概览
- 【GLSL教程】(二)在OpenGL中使用GLSL
- 【GLSL教程】(二)在OpenGL中使用GLSL
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- 【GLSL教程】(二)在OpenGL中使用GLSL
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- 【GLSL教程】(二)在OpenGL中使用GLSL