OpenGL

OpenGL系列之三:三角形顶点增加颜色

2022-11-25  本文已影响0人  itfitness

目录

相关文章

OpenGL系列之一:OpenGL第一个程序
OpenGL系列之二:绘制三角形

实现效果

实现代码

这里是以之前的第二个程序(OpenGL系列之二:绘制三角形)为基础。
我们修改CCOpenGLRender.cpp中的Java_com_itfitness_opengldemo_GLRender_ndkPaintGL函数为如下:

extern "C"
JNIEXPORT void JNICALL
Java_com_itfitness_opengldemo_GLRender_ndkPaintGL(JNIEnv *env, jobject thiz) {
    //清空颜色缓冲区或深度缓冲区
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();

    //定义三角型的点
    CCFloat7 vertexTriangle[] = {
            {-1,-0.7,0,1.0,0.0,0.0,1.0},
            {0,0.7,0,0.0,1.0,0.0,1.0},
            {1,-0.7,0,0.0,0.0,1.0,1.0},
    };

    //设置绘制颜色为绿色
    glColor4f(0.0,1.0,0.0,1.0);
    //启动一组顶点坐标
    glEnableClientState(GL_VERTEX_ARRAY);
    //启动颜色顶点
    glEnableClientState(GL_COLOR_ARRAY);

    // 指定绘制的定点数组
    // 第一个参数:绘制几个点
    // 第二个参数:类型为float
    // 第三个参数:第一个点到第二个点之间的步长(也就是结构体的长度)
    // 第四个参数:绘制数据的地址
    glVertexPointer(3,GL_FLOAT,sizeof(CCFloat7),vertexTriangle);
    //颜色的
    glColorPointer(4,GL_FLOAT,sizeof(CCFloat7),&vertexTriangle[0].r);

    //绘制上面指定的数组
    // 第一个参数:从哪个开始
    // 第二个参数:绘制几个
    glDrawArrays(GL_TRIANGLES,0,3);

    //关闭一组顶点坐标
    glDisableClientState(GL_VERTEX_ARRAY);
    //关闭颜色顶点
    glDisableClientState(GL_COLOR_ARRAY);
}

这里开启颜色的关键代码为如下所示:

    //启动颜色顶点
    glEnableClientState(GL_COLOR_ARRAY);
    //颜色的(其中&vertexTriangle[0].r是获取到存储颜色的地址)
    glColorPointer(4,GL_FLOAT,sizeof(CCFloat7),&vertexTriangle[0].r);
    //关闭颜色顶点
    glDisableClientState(GL_COLOR_ARRAY);
上一篇下一篇

猜你喜欢

热点阅读