opengl 开发笔记-性能优化之顶点缓存

本文介绍如何在OpenGL中使用顶点缓冲对象(VBO)进行纹理绘制的基础知识。包括初始化VBO、设置顶点缓存及纹理坐标缓存、绘制带有纹理的图形等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 定义顶点缓存
    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值