zoukankan      html  css  js  c++  java
  • OpenGL指定顶点

    还是需要以实例的形式来指定OpenGL指定顶点的函数  glVertex*()函数。

    glVertex2s(2,3);  表示具有三维坐标(2,3,0)的顶点(记住,如果未指定z坐标,它便默认为0)。

    glVertex3d(0.0,0.0,3.14159265); 类型为双精度的浮点值。

    glVertex4f(2.3,1.0.-2.2,2.0); 齐次坐标表示一个具有三维坐标(1.15,0.5,-1.1)的顶点(记住,x,y和z坐标最终将除以w)。

    GLdouble dvect[3] = {5.0,9.0,1992.0}; 

    glVertex3dv(dvect); dvect是一个指向数组的指针,这个数组包含了3个双精度浮点值。

    OpenGL几何图元

    指定顶点,还需要知道如何告诉OpenGL根据这些顶点创建一组点、一条直线或一个多边形。为了实现这个目的,需要把一组顶点放在一对glBegin()和glEnd()之间。传递给glBegin()的参数决定了这些顶点所构建的几何图元的类型,例如:

    glBegin(GL_POLYGON);
    
    glVectex2f(0.0,0.0);
    
    glVectex2f(0.0,3.0);
    
    glVectex2f(4.0,3.0);
    
    glVectex2f(6.0,1.5);
    
    glVectex2f(4.0,0.0);
    
    glEnd();

    如果用GL_POINTS代替GL_POLYGON,这个图元就是5个点。

     使用glBegin()和glEnd()的限制


    顶点最重要的信息是它们的坐标,它们是由glVertex*()函数指定的。另外,还可以使用特殊的函数,为每个顶点指定额外的特殊数据,例如颜色,法线向量,纹理坐标,或上述的任意组合,另外,还有一些函数可以在glBegin()和glEnd()之间使用

     除了这些函数之外,glBegin()和glEnd()之间不能使用其他OpenGL函数。如果采用了这样的做法,绝大多数情况下将会出现错误。有些顶点数组函数,例如glEnableClientState()和glVertexPointer(),如果在glBegin()和glEnd()之间调用,将产生未定义的行为,但是不一定会产生错误。同样,与OpenGL相关的函数,例如glX*()函数,如果在glBegin()和glEnd()之间调用,也具有未定义的行为,这种情况应该尽量避免,因为它们很难调试出来。

    glBegin()和glEnd()之间当然可以包含其他编程语言结构。

    #define PI 3.1415926535898
    
    GLint circle_points = 100;
    
    glBegin(GL_LINE_LOOP);
    
    for(i = 0; i < circle_points; i++)
    
    {
    
          angle = 2*PI*i/circle_points;
    
          glVertex2f(cos(angle),sin(angle));
    
    }
    
    glEnd();
  • 相关阅读:
    Spring配置自动加载执行多次的解决方法
    获取Excel文件内容,0307通用
    将Json转实体
    将实体转换为map
    Json数据转Map
    获取随机字符串
    将长内容分割,用双主键进行存储
    解决win10开机出现C:WIndowssystem32configsystemprofileDesktop不可用 问题
    2016.2.22
    云中行走
  • 原文地址:https://www.cnblogs.com/joorey/p/15016763.html
Copyright © 2011-2022 走看看