zoukankan      html  css  js  c++  java
  • OpenGL超级宝典第5版&&基础渲染

    1.OpenGL查询拓展机制是否被支持

    gltools函数库:
    int gltIsExtSupported(const char *extension)
         {
        #ifndef OPENGL_ES      
        GLint nNumExtensions;
        glGetIntegerv(GL_NUM_EXTENSIONS, &nNumExtensions);
       
        for(GLint i = 0; i < nNumExtensions; i++)
            if(strcmp(extension, (const char *)glGetStringi(GL_EXTENSIONS, i)) == 0)
               return 1;
        #else
            GLubyte *extensions = NULL;
            const GLubyte *start;
            GLubyte *where, *terminator;
           
            where = (GLubyte *) strchr(extension, ' ');
            if (where || *extension == '')
                return 0;
           
            extensions = (GLubyte *)glGetString(GL_EXTENSIONS);
           
            start = extensions;
            for (;;)
              {
                where = (GLubyte *) strstr((const char *) start, extension);
               
                if (!where)
                    break;
               
                terminator = where + strlen(extension);
               
                if (where == start || *(where - 1) == ' ')
                   {
                    if (*terminator == ' ' || *terminator == '')
                        return 1;
                   }
                start = terminator;
              }
        #endif
         return 0;
         }
    

    2.基本概念:

    1)顶点着色器:处理从客户端输入的数据,应用变换,或者进行其他类型的数学计算来计算光照效果、位移、颜色值等等。

            我们得为顶点着色器提供数据,有三种方法:属性,uniform值和纹理

    2)属性:属性就是一个对每个顶点都要做改变的数据元素。
                 属性总是以四维向量的形式进行内部存储的。
                 属性包括纹理坐标,颜色值和用于光照计算的表面法线。
                 属性会从本地客户机内存中复制到图形硬件中的一个缓冲区上。这些属性只供顶点着色器使用,对于片段着色器而言没有意义。
    3)uniform值:uniform变量一个最常用的应用就是在顶点渲染中设置变换矩阵。
                         uniform变量可以存在于顶点着色器和片段着色器中。
                         uniform变量可以是标量类型,矢量类型,也可以是矩阵。
    4)纹理:从顶点着色器和片段着色器中都可以对纹理值进行采样和筛选。
     
    5)正投影:
                   在正投影中,所有在这个空间范围内的所有东西都会被显示在屏幕上,而不存在照相机或者视点坐标系的概念。
     
    6)抗锯齿:
                   为了消除图元之间的锯齿状边缘,使用混合功能来混合片段的颜色,也就是把像素的目标颜色与周围像素的颜色进行混合。从本质上说,在任何图元的边缘上,
                   像素颜色会稍微延伸到相邻的像素。
                   开启抗锯齿功能,得首先开启混合功能,并且要设置混合函数。
                        
    7)多重采样:
                     当多重采样被启用时,点,直线和多边形的平滑特性(GL_***_SMOOTH)将会被忽略。因此,在使用点,直线和多边形的平滑特性时,需要将多重采样关闭,当
                     绘制实心几何图形时再打开多重采样。
                     使用多重采样之前必须先申请一个多重采样缓冲区,,所有的图元在每个像素上进行多次采样,结果存储在这个缓冲区中。
  • 相关阅读:
    《全体育&#183;瑜伽》
    PowerDesigner使用教程
    Android基础之——startActivityForResult启动界面并返回数据,上传头像
    数据仓库与数据挖掘的一些基本概念
    php实现求二进制中1的个数(右移、&、int32位)(n = n & (n
    批量发短信的平台浏览总结
    php资源集
    js进阶正则表达式5几个小实例(原样匹配的字符在正则中原样输出)(取反^)
    js进阶正则表达式方括号(方括号作用)(js正则是在双正斜杠之中:/[a-z]/g)
    js进阶正则表达式修饰符(i、g、m)(var reg2=/html/gi)
  • 原文地址:https://www.cnblogs.com/striver-zhu/p/4533287.html
Copyright © 2011-2022 走看看