OSG论坛管理员 发表于 2009-6-2 22:11:23

GLSL教程(4) OpenGL GLSL程序概述

GLSL教程
译:FreeSouth
OpenGL GLSL程序概述
在本节将介绍创建基于OpenGL的GLSL程序,在这里假定你已经有了一个片元着色器与一个顶点着色器。你可以从橙皮书(即:OpenGL着色语言)提供的网站上下载一些,Shader Designer和Render Monkey里也包含一些着色器的例子。
在OpenGL的程序构建方式与C程序很相似,每一个着色器就相当于一个C模块,你必须分开先编译完成,然后再链接到程序,最后执行,这与C程序的执行过程是相似的。
现在可以使用ARB扩展和OpenGL2.0,如果你是新手,建议看一下glew库,glew对ARB扩展和OpenGL的新版本都有一些不错的应用。
如果你的机器不支持OpenGL2.0,那只有使用ARB扩展了,在这里两个扩展需要支持:
        --GL_ARB_fragment_shader
        --GL_ARB_vertex_shader
这里有一个小例子,使用GLEW去看一下扩展是不是可用:
________________________________________
        #include <GL/glew.h>
        #include <GL/glut.h>
       
        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 <GL/glew.h>
        #include <GL/glut.h>
       
        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();
        }
________________________________________
下图阐释了在OpenGL2.0中使用Shader的一些步骤,以后将分别介绍它们:
http://www.lighthouse3d.com/opengl/glsl/images/ogloverview.gif
下节我们将逐步创建一些Shader程序。
原文地址:http://www.lighthouse3d.com/opengl/glsl/index.php?ogloverview


本章程序:VC9

CR苏杭 发表于 2010-12-7 00:03:38

如果你的机器不支持OpenGL2.0,那只有使用ARB扩展了
——这句话的意味不太明白。
一直没有搞懂gl库和显卡支持关系。
是不是显卡支持的话就直接调用了显卡驱动中的相关接口,而不支持的话,就是用ARB软件模拟的接口?

CR苏杭 发表于 2010-12-7 09:34:56

“可能这么说不太准确,不过ARB就是在某个功能没有加入到核心之前使用的”
“wglGetProcAddress,就是这个来获取扩展函数的地址,然后就可以用了,不用很麻烦地找glext.h”

daiday 发表于 2011-4-7 20:23:39

我用的是glew不知道可否……
页: [1]
查看完整版本: GLSL教程(4) OpenGL GLSL程序概述