OpenGL
来源:互联网 发布:淘宝toto真假 编辑:程序博客网 时间:2024/06/16 04:15
这个是书上的代码,就是一个茶壶加上光照。以后学深了再补。
运行效果:
代码如下:
#include<cstdio>#include<GL\glut.h>#include<Windows.h>#include<algorithm>using namespace std;void init(){ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; GLfloat white_light[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat Light_Model_Ambient[] = { 0.2, 0.2, 0.2, 1.0 }; glClearColor(0, 0, 0, 0); glShadeModel(GL_SMOOTH); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightfv(GL_LIGHT0, GL_DIFFUSE, white_light); glLightfv(GL_LIGHT0, GL_SPECULAR, white_light); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, Light_Model_Ambient); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST);}void display(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.8); glFlush();}void reshape(int w, int h){ glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-1.5, 1.5, -1.5*h / w, 1.5*h / w, -10, 10); else glOrtho(-1.5*w / h, 1.5*w / h, -1.5, 1.5, -10, 10); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}void initWindow(int &argc, char *argv[], int width, int height, char *title){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowPosition((GetSystemMetrics(SM_CXSCREEN) - width) >> 1, (GetSystemMetrics(SM_CYSCREEN) - height) >> 1); //指定窗口位置 glutInitWindowSize(width, height); //指定窗口大小 glutCreateWindow(title);}int main(int argc,char** argv){ initWindow(argc, argv, 1000, 500, "光照实验"); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); return 0;}
阅读全文
0 0
- OPENGL
- opengl
- OpenGL
- OpenGL
- OPENGL
- OpenGL
- OpenGL
- OpenGL
- opengl
- opengl
- opengl
- OPENGL
- OpenGL
- opengl
- Opengl
- opengl
- Opengl
- opengl
- [FAQ12947][Recovery]Update LOGO&LK&PRELOADER via OTA upgrade
- ADO .NET访问数据库(一)
- 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age,该类的成员方法有genNo()getName ). * getSex().getAge().和setA
- Mac 安装mysql以及python驱动
- Eclipse所有历史版本下载地址列表:
- OpenGL
- python while 循环
- numpy.array 和 array以及list的效率对比
- scp传输时提示 REMOTE HOST IDENTIFICATION HAS CHANGED的解决办法
- 场景原画设计教程之入门基础概括
- Eclipse 各版本下载
- JavaScript 内存泄漏教程
- 主线程等待所有子线程执行完毕后再继续的问题
- OA系统中根据文本框按钮控制执行路径和人员加锁和置灰