- 定义顶点缓存
static GLuint vertex_buffer = 0; static GLuint texcoord_buffer = 0;
- 初始化顶点缓存
void initVBO(){ glGenBuffers(1,&vertex_buffer); glBindBuffer(GL_ARRAY_BUFFER,vertex_buffer); glBufferData(GL_ARRAY_BUFFER,sizeof(rect_vertexes),rect_vertexes,GL_STATIC_DRAW); glGenBuffers(1,&texcoord_buffer); glBindBuffer(GL_ARRAY_BUFFER,texcoord_buffer); glBufferData(GL_ARRAY_BUFFER,sizeof(texture_coords),texture_coords,GL_STATIC_DRAW); }
- 绘制图形
void draw_texture(){ glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,texture_id); glBindBuffer(GL_ARRAY_BUFFER,texcoord_buffer); glTexCoordPointer(sizeof(Vertex2F)/sizeof(GLfloat),GL_FLOAT,0,NULL); glColor4f(white_color.r,white_color.g,white_color.b,white_color.a); glBindBuffer(GL_ARRAY_BUFFER,vertex_buffer); glVertexPointer(sizeof(Vertex2F)/sizeof(GLfloat),GL_FLOAT,0,NULL); glDrawArrays(GL_TRIANGLE_STRIP,0,4); glBindBuffer(GL_ARRAY_BUFFER,0); glDisable(GL_TEXTURE_2D); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); }
- 编译程序
g++ DrawBuffers.cpp -lGLEW -lGL -lGLU -lglut -lpng -o DrawBuffers
opengl 开发笔记-性能优化之顶点缓存
最新推荐文章于 2024-04-29 07:40:13 发布