neHe OpenGL lession 5
来源:互联网 发布:国家网络安全法文件 编辑:程序博客网 时间:2024/05/22 17:17
lession 5 3D
// lession 5 3D#include <OpenGL/OpenGL.h>#include <GLUT/GLUT.h>#include <stdio.h>#include <stdlib.h>#include <stdio.h>float rtri; // angle for the triangelfloat rquad; // angle for the quadvoid initGL(void) // Create some everyday functions{glShadeModel(GL_SMOOTH); // Enable smooth shadingglClearColor(0.0f, 0.0f, 0.0f, 0.5f); // black backgroundglClearDepth(1.0f);// depth buffer setupglEnable(GL_DEPTH_TEST); // Depth buffer setupglDepthFunc(GL_LEQUAL); // the type of depth testing to do.glEnable(GL_COLOR_MATERIAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);}void display(void) // create the siplay functions{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear screen and depth bufferglLoadIdentity(); // reset the current modelview matrixglPushMatrix();{glTranslatef(-1.5f, 0.0f, -6.0f); // Move left 1.5 units and into the screen 6.0glRotatef(rtri, 0.0f, 1.0f, 0.0f);glBegin(GL_TRIANGLES);glColor3f(1.0f, 0.0f, 0.0f); // redglVertex3f(0.0f, 1.0f, 0.0f); // top of triangle (Front);glColor3f(0.0f, 1.0f, 0.0f); // greenglVertex3f(-1.0f, -1.0f, 1.0f); // Left of triangle (Front)glColor3f(0.0, 0.0, 1.0); // blueglVertex3f(1.0f, -1.0f, 1.0f); // right of triangle (Front)glColor3f(1.0, 0.0, 0.0); // redglVertex3f(0.0f, 1.0f, 0.0f); // top of triangle (right)glColor3f(0.0f, 0.0f, 1.0f); // blueglVertex3f(1.0f, -1.0f, 1.0f); // left of triangle (right)glColor3f(0.0, 1.0, 0.0); // greenglVertex3f(1.0f, -1.0f, -1.0f); // right of triangle (right);glColor3f(1.0f, 0.0f, 0.0f); // redglVertex3f(0.0f, 1.0f, 0.0f); // top of triangle (back);glColor3f(0.0f, 1.0f, 0.0f); // greenglVertex3f(1.0f, -1.0f, -1.0f); // left of triangle (back)glColor3f(0.0f, 0.0f, 1.0f); // blueglVertex3f(-1.0f, -1.0f, -1.0f); // right of triangle (back)glColor3f(1.0f, 0.0f, 0.0f); // redglVertex3f(0.0f, 1.0f, 0.0f);// top of triangle (left)glColor3f(0.0f, 0.0f, 1.0f); // blueglVertex3f(-1.0f, -1.0f, -1.0f); // left of triangle (left)glColor3f(0.0f, 1.0f, 0.0f); // greenglVertex3f(-1.0f, -1.0f, 1.0f); // right of triangle (left);glEnd();glLoadIdentity();glTranslatef(1.5f, 0.0f, -6.0f);glRotatef(rquad, 1.0f, 0.0f, 0.0f); // Rotate the quad on the x axisglColor3f(0.5f, 0.5f, 1.0f); // Set teh color to blue on time onlyglBegin(GL_QUADS);glColor3f(0.0f, 1.0f, 0.0f); // Set the color to blueglVertex3f( 1.0f, 1.0f, -1.0f); // top right of the quad (top)glVertex3f(-1.0f, 1.0f, -1.0f); // top left of the quad (top)glVertex3f(-1.0f, 1.0f, 1.0f); // bottom left of the quad (top)glVertex3f( 1.0f, 1.0f, 1.0f); // bottom right of the quad (top)glColor3f(1.0f, 0.5f, 0.0f); // Set the color to OrangeglVertex3f( 1.0f, -1.0f, -1.0f); // top right of the quad (bottom)glVertex3f(-1.0f, -1.0f, -1.0f); // top left of the quad (bottom)glVertex3f(-1.0f, -1.0f, 1.0f); // bottom left of the quad (bottom)glVertex3f( 1.0f, -1.0f, 1.0f); // bottom right of the quad (bottom)glColor3f(1.0f, 0.0f, 0.0f); // Set the color to redglVertex3f( 1.0f, 1.0f, 1.0f); // top right of the quad (front)glVertex3f(-1.0f, 1.0f, 1.0f);// top left of the quad (front)glVertex3f(-1.0f, -1.0f, 1.0f);// bottom left of the quad (front)glVertex3f( 1.0f, -1.0f, 1.0f); // bottom right of the quad (front)glColor3f(1.0f, 1.0f, 0.0f);// Set the color to YellowglVertex3f( 1.0f, 1.0f, -1.0f);// top right of the quad (back)glVertex3f(-1.0f, 1.0f, -1.0f);// top left of the quad (back)glVertex3f(-1.0f, -1.0f, -1.0f); // bottom left of the quad (back)glVertex3f( 1.0f, -1.0f, -1.0f); // bottom right of the quad (back)glColor3f(0.0f, 0.0f, 1.0f); // Set the color to blueglVertex3f(-1.0f, 1.0f, 1.0f); // top right of the quad (left)glVertex3f(-1.0f, 1.0f, -1.0f); // top left of the quad (left)glVertex3f(-1.0f, -1.0f, -1.0f); // bottom left of the quad (left)glVertex3f(-1.0f, -1.0f, 1.0f); // bottom right of the quad (left)glColor3f(1.0f, 0.0f, 1.0f); // Set the color to VioletglVertex3f( 1.0f, 1.0f, -1.0f); // top right of the quad (right)glVertex3f( 1.0f, 1.0f, 1.0f); // top left of the quad (right)glVertex3f( 1.0f, -1.0f, 1.0f); // bottom left of the quad (right)glVertex3f( 1.0f, -1.0f, -1.0f); // bottom right of the quad (right)glEnd();}glPopMatrix();rtri += 0.2f; // increase the rotation variable for the triangle (NEW)rquad -= 0.2f; // decrease the rotation variable for the quad (NEW)glutSwapBuffers(); // Swap the buffers to not be left with a clear screen.}// Create the reshape function (the viewport)void reshape(int width, int height){if (height == 0)height = 1;glViewport(0, 0, width, height); // Reset the current viewportglMatrixMode(GL_PROJECTION);// Select the projection matrixglLoadIdentity();// Rest the projection matrix// Calculate the aspect ratio of the windowgluPerspective(45.0f, (GLfloat) width / (GLfloat) height, 0.1f, 100.0f);glMatrixMode(GL_MODELVIEW);// Select the Modelview MatrixglLoadIdentity();// Reset the Modelview Matrix}// Create keyboard functionvoid keyboard(unsigned char key, int x, int y) {switch (key) {case 27:exit(0);break;default:break;}}// Create Special Function (required for arrow keys)void arrow_keys(int a_keys, int x, int y){switch (a_keys) {case GLUT_KEY_UP: // When Up Arrow is pressed...glutFullScreen(); // Go into full screen modebreak;case GLUT_KEY_DOWN: // When Down arrow is pressed....glutReshapeWindow(500, 500); // go into a 500 by 500 windowbreak;default:break;}}// create main function for bringing it all togetherint main(int argc, char **argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutInitWindowSize(500, 500);glutCreateWindow("NeHe's OpenGL Framework");// glutFullScreen();initGL();glutDisplayFunc(display);glutReshapeFunc(reshape);glutKeyboardFunc(keyboard);glutSpecialFunc(arrow_keys);glutIdleFunc(display);glutMainLoop();return 0;}
Mac 终端运行:
$: clang -o lession lession5.c -Wno-deprecated -framework OpenGL -framework GLUT
$: ./lession
0 1
- neHe OpenGL lession 5
- NeHe OpenGL lession 1
- NeHe OpenGL lession 2
- neHe OpenGL lession 3
- NeHe OpenGL lession 4
- neHe OpenGL lession 6
- NeHe的OpenGL教程 lesson1-5 学习心得
- Lession 5集合入门
- NeHe OpenGL Tutorial
- openGL学习, NeHe教材.
- Nehe的openGL框架
- Nehe opengl 环境搭建
- NEHE Opengl常见问题总结
- opengl win32 nehe
- NeHe OpenGL教程中文版
- VS2008 配置 opengl nehe
- NeHe OpenGL lesson 7
- Nehe OpenGL lesson 8
- 全排列生成算法:next_permutation
- 学习Swift中的CoreImage(图形核心编程)
- C#中dynamic的正确用法
- 链式堆栈
- MATLAB 声卡连续信号采集
- neHe OpenGL lession 5
- CentOS6.5安装MRBS
- 将spinbox重写虚函数,支持16进制微调框
- iOS实现打电话功能
- [leetcode] Search in Rotated Sorted Array II
- C++11新标准之三:nullptr
- 1229 数字游戏
- java基本数据类型初始值(默认值) ,在设计数据库时造成的问题
- sqlserver2008添加删除字段