[C/C++] OpenGL ES 3.0教程:01 三角形 代码

#include <android_native_app_glue.h> //c4droid必须要
#include "esUtil.hpp"

struct UserData
{
    GLuint id;//着色程序id
};
bool init(ESContext*);
void draw(ESContext*);
void shutdown(ESContext*);

int esMain(ESContext * esContext)
{
    esContext->userData = new UserData;
    esCreateWindow ( esContext, "", 1080, 2160, ES_WINDOW_RGB );//我的手机屏幕分辨率是1080*2160的,这个根据情况而定
    esRegisterShutdownFunc ( esContext, shutdown );
    esRegisterDrawFunc ( esContext, draw );
    if ( !init ( esContext ) )
    {
        return 0;//表示退出
    }
    return 1;
}

bool init(ESContext * esContext)
{
    UserData * ud = (UserData*)esContext->userData;
    char vStr[] =
    "#version 300 es\n"
    "layout(location=0)in vec3 pos;\n"
    "void main()\n"
    "{\n"
    "    gl_Position = vec4(pos.x,pos.y,pos.z,1.0);\n"
    "}\n";
    char fStr[] =
    "#version 300 es\n"
    "out vec4 color;\n"
    "void main()\n"
    "{\n"
    "    color = vec4(1.0,1.0,1.0,1.0);\n"
    "}\n";
    ud->id = esLoadProgram(vStr,fStr);
    if(ud->id == 0)
        return false;
    return true;
}

void draw(ESContext * esContext)
{
    UserData * ud = (UserData*)esContext->userData;
    GLfloat ver[] =
    {
        0.0,0.5,0.0,
        -0.5,-0.5,0.0,
        0.5,-0.5,0.,
    };
    glClearColor(0.0,0.0,0.0,0.0); //背景颜色,这里是黑色
    glClear(GL_COLOR_BUFFER_BIT); //清理颜色缓冲区(???)
    glViewport ( 0, 0, esContext->width, esContext->height );
    glUseProgram ( ud->id ); //使用着色程序
    glEnableVertexAttribArray ( 0 );
    glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, ver ); //绑定顶点
    glDrawArrays ( GL_TRIANGLES, 0, 3 ); //绘制
    glDisableVertexAttribArray ( 0 );
}

void shutdown(ESContext * esContext)
{
    UserData * ud = (UserData*)esContext->userData;
    glDeleteProgram ( ud->id );
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值