opengl 填充
- 作者: -余温都是罪
- 来源: 51数据库
- 2020-09-28
假设是一个正六边形的填充
void glMain()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -3.0f);
glColor3f(0.0f, 0.0f, 0.0f);
/* 绘制一个指定图案填充的矩形 */
//启用图案填充
glEnable (GL_POLYGON_STIPPLE);
//指定使用哪种图案
glPolygonStipple (aoyun);
glBegin(GL_POLYGON); //六边形
glVertex3f(1.0, 0.0, 0.0);
glVertex3f(0.5, 0.866, 0.0);
glVertex3f(-0.5, 0.866, 0.0);
glVertex3f(-1.0, 0.0, 0.0);
glVertex3f(-0.5, -0.866, 0.0);
glVertex3f(0.5, -0.866, 0.0);
glEnd();
SwapBuffers(g_hDC);
}
你这里有两个问题
一是重复
这个可以通过纹理映射的参数来解决
二是透明
这个可以通过alpha混合来解决
关于纹理重复你可以查看gltexparameteri函数的相关说明
透明参看glalphafunc
void glMain()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -3.0f);
glColor3f(0.0f, 0.0f, 0.0f);
/* 绘制一个指定图案填充的矩形 */
//启用图案填充
glEnable (GL_POLYGON_STIPPLE);
//指定使用哪种图案
glPolygonStipple (aoyun);
glBegin(GL_POLYGON); //六边形
glVertex3f(1.0, 0.0, 0.0);
glVertex3f(0.5, 0.866, 0.0);
glVertex3f(-0.5, 0.866, 0.0);
glVertex3f(-1.0, 0.0, 0.0);
glVertex3f(-0.5, -0.866, 0.0);
glVertex3f(0.5, -0.866, 0.0);
glEnd();
SwapBuffers(g_hDC);
}
你这里有两个问题
一是重复
这个可以通过纹理映射的参数来解决
二是透明
这个可以通过alpha混合来解决
关于纹理重复你可以查看gltexparameteri函数的相关说明
透明参看glalphafunc
推荐阅读
