OpenGL系列之四:绘制四边形

手机软件开发 2024-10-5 22:40:39 67 0 来自 中国
目次

干系文章

OpenGL系列之一:OpenGL第一个步调
OpenGL系列之二:绘制三角形
OpenGL系列之三:三角形极点增长颜色
实现结果

实当代码

这里是以之前的第三个步调(OpenGL系列之三:三角形极点增长颜色)为底子。
这里我们照旧只修改CCOpenGLRender.cpp中的Java_com_itfitness_opengldemo_GLRender_ndkPaintGL函数,我们调解绘制点的坐标,然后再增长一个点,别的我们也要调解glDrawArrays函数的mode参数为GL_TRIANGLE_STRIP,详细如下:
extern "C"JNIEXPORT void JNICALLJava_com_itfitness_opengldemo_GLRender_ndkPaintGL(JNIEnv *env, jobject thiz) {    //清空颜色缓冲区或深度缓冲区    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    glLoadIdentity();    //界说三角型的点    CCFloat7 vertexTriangle[] = {            {0.7,-0.7,0,1.0,0.0,0.0,1.0},            {0.7,0.7,0,0.0,1.0,0.0,1.0},            {-0.7,-0.7,0,0.0,0.0,1.0,1.0},            {-0.7,0.7,0,1.0,0.0,1.0,1.0},    };    //启动一组极点坐标    glEnableClientState(GL_VERTEX_ARRAY);    //启动颜色极点    glEnableClientState(GL_COLOR_ARRAY);    // 指定绘制的定点数组    // 第一个参数:绘制几个点(这里实在就是CCFloat7中的前三个点x,y,z)    // 第二个参数:范例为float    // 第三个参数:第一个点到第二个点之间的步长(也就是布局体的长度)    // 第四个参数:绘制数据的地点    glVertexPointer(3,GL_FLOAT,sizeof(CCFloat7),vertexTriangle);    //颜色的    glColorPointer(4,GL_FLOAT,sizeof(CCFloat7),&vertexTriangle[0].r);    //绘制上面指定的数组    // 第一个参数:从哪个开始    // 第二个参数:绘制几个点    glDrawArrays(GL_TRIANGLE_STRIP,0,4);    //关闭一组极点坐标    glDisableClientState(GL_VERTEX_ARRAY);    //关闭颜色极点    glDisableClientState(GL_COLOR_ARRAY);}补充阐明

关于glDrawArrays中mode的参数,我们之前绘制三角形利用的是GL_TRIANGLES,这次我们利用的是GL_TRIANGLE_STRIP,实在尚有一个GL_TRIANGLE_FAN可以利用,这三个mode的区别如下:
GL_TRIANGLES:每三个点绘制一个三角形,不共享点
GL_TRIANGLE_STRIP:如果有四个极点,那么第2和第3个极点将被作为共享极点
GL_TRIANGLE_FAN:如果有四个极点,那么第一个极点始终作为共享极点,第二个极点也会做一次共享极点

3.png
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-23 17:38, Processed in 0.126442 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表