OpenGL基础(二) 顶点数组
1.普通的绘制顶点的方式
1)逐个定点指定
例如 glBegin(GL_POLYGON)
{
glVertex3f(0.25, 0.25, 0.0);
glVertex3f.........
}
2)利用二维数组建一个顶点的向量数组
void drawVertex() { GLfloat vertexList[4][3] = { {-1.0,-1.0,0.0},{1.0,-1.0,0.0},{1.0,1.0,0.0},{-1.0,1.0,0.0} }; glBegin(GL_POLYGON); for (int i = 0; i < 4; i++) glVertex3f(vertexList[i][0], vertexList[i][1], vertexList[i][2]); glEnd(); }
顶点绘制语句放在display函数里
2.顶点数组
分步解析
1)建立数据:工作量比较大)
2)启用数组:几个语句
3)往OpenGL的顶点数组对象里存数(保存在客户端存储器):
需要注意参数设置,包括数据量大小,每隔几个读一个数据,以及数据来源的数组指针
4)取用数据到服务器进行绘图
有三种模式,语句调用
代码示例:
1 void drawVertex() 2 {//定义数据 3 static GLfloat vertices[] = 4 {-1.0,-1.0,0.0, 5 0.0,-0.5,0.0, 6 0.5,-1.0,0.0, 7 1.0,0.0,0.0, 8 1.0,1.0,0.0, 9 0.0,1.0,0.0, 10 -0.5,0.0,0.0, 11 -1.0,1.0,0.0, 12 }; 13 //启用数组 并指定数组类型 14 glEnableClientState(GL_VERTEX_ARRAY); 15 //传数据给顶点数组 16 glVertexPointer(3, GL_FLOAT, 0, vertices); 17 //使用顶点数组绘图 18 glDrawArrays(GL_POLYGON, 0, 8); 19 }
把这个函数写到display里
附:一个简单(未加变换、光照)OpenGL程序的所需的基本代码模板

// Basic line. #include "stdafx.h" #include<gl/glut.h> #include<stdlib.h> #include<stdio.h> #include<iostream> void init(void)//这个函数在程序开始被调用一次 { glClearColor(1.0, 1.0, 1.0,0.0);//设置清屏色 glOrtho(-2.0, 2.0, -2.0, 2.0, 2.0, -2.0);//设置视见体还是什么的 } void display(void)//每次重新绘制屏幕的时候都要调用一次 { glClear(GL_COLOR_BUFFER_BIT);//清楚颜色缓存 glColor3f(0.0, 0.0, 1.0);//当前颜料的颜色 //在这里写绘制函数 glutSwapBuffers();//动画显示 //glFlush();//静态显示 赶紧显示 } int main(int argc, char** argv) { glutInit(&argc, argv);//glut库与控制台初始化函数 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);//显示模式 单双缓存 颜色模式 深度 //glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowPosition(500, 200);//窗口的位置??窗口左上角距离屏幕左上角? glutInitWindowSize(500, 500); glutCreateWindow(" eeo ");//窗口名字 init();//调用自定义的初始化函数 glutDisplayFunc(display);//注册显示回调函数 glutMainLoop();//进入事件循环 return 0; }
作品原创 转载请注明出处