OpenGL 顏色立方體
阿新 • • 發佈:2019-03-09
eat int init ren 老師 windows .com .net 希望
分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net
代碼如下:
#include <stdio.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include <gl/glut.h>
#pragma comment(lib, "glut32.lib")
GLfloat AngleX;
GLfloat AngleY;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
{
glRotatef(AngleX,1.0f ,0.0f,0.0f);
glRotatef(AngleY,0.0f,1.0f,0.0f);
glBegin(GL_POLYGON); //前表面
glColor3ub((GLubyte)255,(GLubyte)255,(GLubyte)255);//顏色設置為白色
glVertex3f(50.0f,50.0f,50.0f);
glColor3ub((GLubyte)255,(GLubyte)255,(GLubyte)0);//顏色設置為黃色
glVertex3f(50.0f,-50.0f,50.0f);
glColor3ub((GLubyte)255,(GLubyte)0,(GLubyte)0);//顏色設置為紅色
glVertex3f(-50.0f,-50.0f,50.0f);
glColor3ub((GLubyte)255,(GLubyte)0,(GLubyte)255);//顏色設置為白色
glVertex3f(-50.0f,50.0f,50.0f);
glEnd();
glBegin(GL_POLYGON); //後表面
glColor3f(0.0f,1.0f,1.0f);//顏色設置為青色
glVertex3f(50.0f,50.0f,-50.0f);
glColor3f(0.0f,1.0f,0.0f);//顏色設置為綠色
glVertex3f(50.0f,-50.0f,-50.0f);
glColor3f(0.0f ,0.0f,0.0f);//顏色設置為黑色
glVertex3f(-50.0f,-50.0f,-50.0f);
glColor3f(0.0f,0.0f,1.0f);//顏色設置為藍色
glVertex3f(-50.0f,50.0f,-50.0f);
glEnd();
glBegin(GL_POLYGON); //上表面
glColor3d(0.0,1.0,1.0);//顏色設置為青色
glVertex3f(50.0f,50.0f,-50.0f);
glColor3d(1.0,1.0,1.0);//顏色設置為白色
glVertex3f(50.0f,50.0f,50.0f);
glColor3d(1.0,0.0,1.0);//顏色設置為品紅色
glVertex3f(-50.0f,50.0f,50.0f);
glColor3d(0.0,0.0,1.0);//顏色設置為藍色
glVertex3f(-50.0f,50.0f,-50.0f);
glEnd();
glBegin(GL_POLYGON); //下表面
glColor3ub(0u,255u,0u);//顏色設置為綠色
glVertex3f(50.0f,-50.0f,-50.0f);
glColor3ub(255u,255u,0u);//顏色設置為黃色
glVertex3f(50.0f,-50.0f,50.0f);
glColor3ub(255u,0u,0u);//顏色設置為紅色
glVertex3f(-50.0f,-50.0f,50.0f);
glColor3ub(0u,0u,0u);//顏色設置為黑色
glVertex3f(-50.0f,-50.0f,-50.0f);
glEnd();
glBegin(GL_POLYGON); //左表面
glColor3ub((GLubyte)255,(GLubyte)255,(GLubyte)255);//顏色設置為白色
glVertex3f(50.0f,50.0f,50.0f);
glColor3ub((GLubyte)0,(GLubyte)255,(GLubyte)255);//顏色設置為青色
glVertex3f(50.0f,50.0f,-50.0f);
glColor3ub((GLubyte)0,(GLubyte)255,(GLubyte)0);//顏色設置為綠色
glVertex3f(50.0f,-50.0f,-50.0f);
glColor3ub((GLubyte)255,(GLubyte)255,(GLubyte)0);//顏色設置為黃色
glVertex3f(50.0f,-50.0f,50.0f);
glEnd();
glBegin(GL_POLYGON); //右表面
glColor3f(1.0f,0.0f,1.0f);//顏色設置為品紅色
glVertex3f(-50.0f,50.0f,50.0f);
glColor3f(0.0f,0.0f,1.0f);//顏色設置為藍色
glVertex3f(-50.0f,50.0f,-50.0f);
glColor3f(0.0f,0.0f,0.0f);//顏色設置為黑色
glVertex3f(-50.0f,-50.0f,-50.0f);
glColor3f(1.0f,0.0f,0.0f);//顏色設置為紅色
glVertex3f(-50.0f,-50.0f,50.0f);
glEnd();
}
glPopMatrix();
glutSwapBuffers();
}
void reshape(int w, int h)
{
GLfloat aspect = (GLfloat)w / (GLfloat)h;
GLfloat nRange = 100.0f;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION); //將當前矩陣指定為投影模式
glLoadIdentity();
//設置三維投影區
if (w<=h)
{
glOrtho(-nRange, nRange, -nRange * aspect, nRange * aspect, -nRange, nRange);
}
else
{
glOrtho(-nRange, nRange, -nRange / aspect, nRange / aspect, -nRange, nRange);
}
}
void key_board(GLint key,GLint x,GLint y)
{
if(key == GLUT_KEY_UP)
{
AngleX -= 5.0f;
}
if(key == GLUT_KEY_DOWN)
{
AngleX += 5.0f;
}
if(key == GLUT_KEY_LEFT)
{
AngleY -= 5.0f;
}
if(key == GLUT_KEY_RIGHT)
{
AngleY += 5.0f;
}
if(AngleX > 355.0f)
{
AngleX = 0.0f;
}
if(AngleX < 0.0f)
{
AngleX = 355.0f;
}
if(AngleY > 355.0f)
AngleY = 0.0f;
if(AngleY < 0.0f)
{
AngleY = 355.0f;
}
glutPostRedisplay();
}
void init()
{
AngleX = 45.0f;
AngleY = 315.0f;
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
glEnable(GL_DITHER);
glShadeModel(GL_SMOOTH);
}
void main(int argc,char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(480,480);
glutCreateWindow("OpenGL顏色立方體");
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutSpecialFunc(key_board); //設置處理特殊擊鍵的回調函數
init();
glutMainLoop();
}
效果圖:
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net
OpenGL 顏色立方體