标签:opengl 查看opengl 版本信息 oepngl顶点数组
glArrayElement,,glDrawElements和glDrawArrays: 这三个 都是 使用 顶点 数组 绘制的 OpenGl函数。
glArrayElement 每次 只能 使用 一组 顶点数据,并且 必须 在 GLbegin 和 glend 之间 绘制。
glDrawElements 每次 可以 绘制 多组 顶点数据,顺序 可以 任意 存放,无 glBegin 和 glend 的限制。
glDrawArrays 每次 可以绘制 多组顶点数据,必须 从 起点 到 终点 按顺序 绘制,无 glBegin 和 glend 限制。
其实 还有 几个 使用 顶点数组 绘制的 函数 ,在我使用的 这个版本(opengl 3.3) 被删除了。
查看版本等信息:
const GLubyte* name = glGetString(GL_VENDOR); //返回负责当前OpenGL实现厂商的名字
const GLubyte* biaoshifu = glGetString(GL_RENDERER); //返回一个渲染器标识符,通常是个硬件平台
const GLubyte* OpenGLVersion =glGetString(GL_VERSION); //返回当前OpenGL实现的版本号
const GLubyte* gluVersion= gluGetString(GLU_VERSION); //返回当前GLU工具库版本
介绍完了,直接上代码:
// vertexPointer.cpp : 定义控制台应用程序的入口点。 //使用顶点数组 进行 渲染 // #include "stdafx.h" #include <gl/glut.h> void init(){ glClearColor(0,0,0,0); //开启顶点,颜色数组 glEnableClientState(GL_VERTEX_ARRAY); glEnable(GL_COLOR_ARRAY); } //用 glArrayElement方式绘制 void useGlArrayElement(){ static GLfloat vertexs[] = { -1,-1,0, -0.5,-0.5,0, -1,-0.5,0}; static GLfloat colors[] = { 1,0,0, 0,1,0, 0,0,1 }; //绑定顶点数组 glVertexPointer(3,GL_FLOAT,0,vertexs); glColorPointer(3,GL_FLOAT,0,colors); //解引用 和 绘制 glBegin(GL_TRIANGLES); glArrayElement(1); glArrayElement(0); glArrayElement(2); glEnd(); } void useGlDrawElements(){ static GLfloat vertexs[] = { -0.4,-1,0, -0.2,-1,0, -0.2,-0.5,0}; static GLfloat colors[] = { 1,0,0, 0,1,0, 0,0,1 }; //绑定顶点数组 glVertexPointer(3,GL_FLOAT,0,vertexs); glColorPointer(3,GL_FLOAT,0,colors); //解引用 和 绘制 GLubyte array[] = {0,1,2}; //type 必须是 无符号整形: GL_BYTE -- > gl glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_BYTE,array); } //glDraw void useGlDrawArrays(){ static GLfloat vertexs[] = { 0,0,0, 0,0.5,0, 0.3,0.4,0}; static GLfloat colors[] = { 1,0,0, 0,1,0, 0,0,1 }; //绑定顶点数组 glVertexPointer(3,GL_FLOAT,0,vertexs); glColorPointer(3,GL_FLOAT,0,colors); //gldraw glDrawArrays(GL_TRIANGLES,0,3); } void display(){ glClear(GL_COLOR_BUFFER_BIT); //gl useGlArrayElement(); useGlDrawElements(); useGlDrawArrays(); glFlush(); } //打印opengl信息 void printGlInfo(){ const GLubyte* name = glGetString(GL_VENDOR); //返回负责当前OpenGL实现厂商的名字 const GLubyte* biaoshifu = glGetString(GL_RENDERER); //返回一个渲染器标识符,通常是个硬件平台 const GLubyte* OpenGLVersion =glGetString(GL_VERSION); //返回当前OpenGL实现的版本号 const GLubyte* gluVersion= gluGetString(GLU_VERSION); //返回当前GLU工具库版本 printf("OpenGL实现厂商的名字:%s\n", name); printf("渲染器标识符:%s\n", biaoshifu); printf("OpenGL实现的版本号:%s\n",OpenGLVersion ); printf("OGLU工具库版本:%s\n", gluVersion); } int _tmain(int argc, _TCHAR* argv[]) { glutInit(&argc,(char **)argv); glutInitWindowSize(500,500); glutInitWindowPosition(100,100); glutCreateWindow("vertexArray"); printGlInfo(); init(); glutDisplayFunc(display); glutMainLoop(); return 0; }运行截图:
版权声明:本文为博主原创文章,未经博主允许不得转载。
看opengl写代码(6)glArrayElement,,glDrawElements和glDrawArrays
标签:opengl 查看opengl 版本信息 oepngl顶点数组
原文地址:http://blog.csdn.net/fuming0210sc/article/details/46885509