【OpenGL】OpenGL系列——01颜色使用
2017-04-13 15:10
267 查看
void myinit(void){ glClearColor(0.5, 0.5, 0.5, 0.0); } void display(void){ //glClear(GL_COLOR_BUFFER_BIT); //glBegin(GL_TRIANGLES); // glShadeModel(GL_SMOOTH); //明暗模式 // glColor3f(1.0, 0.0, 0.0); // glVertex2f(0.0, 0.0); // glColor3f(0.0, 1.0, 0.0); // glVertex2f(1.0, 0.0); // glColor3f(0.0, 0.0, 1.0); // glVertex2f(0.5, 1.0); //glEnd(); //glBegin(GL_TRIANGLES); // glShadeModel(GL_FLAT); // glColor3f(1.0, 0.0, 0.0); // glVertex2f(0.5, 0.0); // glColor3f(0.0, 1.0, 0.0); // glVertex2f(1.5, 0.0); // glColor3f(0.0, 0.0, 1.0); // glVertex2f(1.0, 1.0); //glEnd(); //glFlush(); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.0, 0.0); //画分割线,分成四个视见区 glViewport(0, 0, 400, 400); glBegin(GL_LINES); glVertex2f(-1.0, 0); glVertex2f(1.0, 0); glVertex2f(0.0, -1.0); glVertex2f(0.0, 1.0); glEnd(); //定义在左下角的区域 glColor3f(0.0, 1.0, 0.0); glViewport(0, 0, 200, 200); glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); //定义在右上角的区域 glColor3f(0.0, 0.0, 1.0); glViewport(200, 200, 200, 200);//注意,后面这两个参数是高度和宽度,而不是坐标 glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); //定义在左上角的区域 glColor3f(1.0, 0.0, 0.0); glViewport(0, 200, 200, 200);//注意,后面这两个参数是高度和宽度,而不是坐标 glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); //定义在右下角 glColor3f(1.0, 1.0, 1.0); glViewport(200, 0, 200, 200);//注意,后面这两个参数是高度和宽度,而不是坐标 glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glFlush(); } void myReshape(GLsizei w, GLsizei h){ glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h){ gluOrtho2D(-1.5, 1.5, -1.5, 1.5*(GLfloat)w / (GLfloat)h ); } else{ gluOrtho2D(-1.5, 1.5*(GLfloat)w / (GLfloat)h, -1.5, 1.5); } glMatrixMode(GL_MODELVIEW); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400, 400); glutInitWindowPosition(700, 500); glutCreateWindow("color"); myinit(); glutReshapeFunc(myReshape); glutDisplayFunc(display); glutMainLoop(); return 0; }
========================================================
void myinit(void){ glClearColor(0.0, 1.0, 1.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); glShadeModel(GL_SMOOTH); } void display(void){ GLint i, j; GLfloat rgb[8][3] = { { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.5 }, { 0.5, 0.5, 0.5 }, { 0.5, 0.5, 0.0 }, { 1.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }, { 0.5, 0.0, 0.5 }, { 1.0, 0.5, 0.0 } }; GLfloat fan[8][2] = { { 7.0, -7.0 }, { 0.0, -10.0 }, { -7.0, -7.0 }, {-10.0,0.0}, { -7.0, 7.0 }, {0.0,10.0}, {7.0,7.0}, {10.0,0.0} }; glTranslatef(-15.0, -15.0, 0.0); for (j = 0; j < 8; j++){ glColor4f(rgb[j][0], rgb[j][1], rgb[j][2], 0.5); glIndexd(j + 1); glTranslatef(j, j - 1, 0); glutSolidSphere(1.0, 20.0, 20.0); } glFlush(); } void myReshape(GLsizei w, GLsizei h){ glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(100.0, 1.0, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -15.0); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400, 400); glutInitWindowPosition(700, 500); glutCreateWindow("color"); myinit(); glutReshapeFunc(myReshape); glutDisplayFunc(display); glutMainLoop(); return 0; }
相关文章推荐
- [转]Ultra Fractal教程系列49——动画功能的使用07——颜色渐变动画
- OpenGL In C# 01 NativeOpenGL 使用默认窗体绘制OpenGL内容
- OpenGLShader 编程系列- glUniform*的使用
- 【译】Android Studio使用技巧系列之快捷键01
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
- [转]Ultra Fractal教程系列18——如何使用图层01——图层面板
- 实战c++中的string系列--十六进制的字符串转为十六进制的整型(通常是颜色代码使用)
- opengl入门系列-颜色分布住状图
- opengl入门系列4-颜色索引模式
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
- OD使用教程 - 调试篇01|解密系列
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
- 使用伪彩色函数指定opengl颜色
- opengl入门系列- 颜色混合
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
- jQuery系列01---jQuery简介、jQuery使用详解、DOM对象与jQuery对象的转换与区别
- ANDROID NDK实践开发系列--(01) 使用ndk编译c可执行程序
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
- 实战c++中的string系列--十六进制的字符串转为十六进制的整型(通常是颜色代码使用)