您的位置:首页 > 运维架构

【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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: