资源简介
交互式计算机图形学--基于openGL的自顶向下方法,包含6个cpp文件,其中涉及到彩色立方体,以及立方体的旋转、点光源下的阴影显示、鼠标键盘的交互,可改变视景深度。
代码片段和文件信息
/* rotating cube with color interpolation */
/* demonstration of use of homogeneous-coordinate transformations
and simple data structure for representing cube from Chapter 4 */
/* colors are assigned to the vertices */
/* cube is centered at origin */
#include
#include
GLfloat vertices[] ={-1.0-1.0-1.01.0-1.0-1.0
1.01.0-1.0 -1.01.0-1.0 -1.0-1.01.0 1.0-1.01.0
1.01.01.0 -1.01.01.0};
GLfloat colors[] = {0.00.00.01.00.00.0 1.01.00.0
0.01.00.0 0.00.01.0 1.00.01.0 1.01.01.0 0.01.01.0};
GLubyte cubeIndices[]={032123760473126545670154};
static GLfloat theta[] = {0.00.00.0};
static GLint axis = 2;
void display()
{
/* display callback clear frame buffer and z buffer
rotate cube and draw swap buffers */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(theta[0] 1.0 0.0 0.0);
glRotatef(theta[1] 0.0 1.0 0.0);
glRotatef(theta[2] 0.0 0.0 1.0);
glDrawElements(GL_QUADS 24 GL_UNSIGNED_BYTE cubeIndices);
glBegin(GL_LINES);
glVertex3f(0.00.00.0);
glVertex3f(1.01.01.0);
glEnd();
glFlush();
glutSwapBuffers();
}
void spinCube()
{
/* idle callback spin cube 2 degrees about selected axis */
theta[axis] += 2.0;
if( theta[axis] > 360.0 ) theta[axis] -= 360.0;
glutPostRedisplay();
}
void mouse(int btn int state int x int y)
{
/* mouse callback selects an axis about which to rotate */
if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) axis = 0;
if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) axis = 1;
if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) axis = 2;
}
void myReshape(int w int h)
{
glViewport(0 0 w h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho(-2.0 2.0 -2.0 * (GLfloat) h / (GLfloat) w
2.0 * (GLfloat) h / (GLfloat) w -10.0 10.0);
else
glOrtho(-2.0 * (GLfloat) w / (GLfloat) h
2.0 * (GLfloat) w / (GLfloat) h -2.0 2.0 -10.0 10.0);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc char **argv)
{
/* need both double buffering and z buffer */
glutInit(&argc argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500 500);
glutCreateWindow(“colorcube“);
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glutIdleFunc(spinCube);
glutMouseFunc(mouse);
glEnable(GL_DEPTH_TEST); /* Enable hidden--surface--removal */
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3 GL_FLOAT 0 vertices);
glColorPointer(3GL_FLOAT 0 colors);
glColor3f(1.01.01.0);
glutMainLoop();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2835 2008-10-23 10:34 计算机图形学代码\code\cubev.c
文件 3198 2002-04-06 11:06 计算机图形学代码\code\cubevs.c
文件 3116 2005-04-26 20:37 计算机图形学代码\code\cube_view.c
文件 1869 2008-10-09 11:02 计算机图形学代码\code\simple.c
文件 2494 2005-04-25 07:22 计算机图形学代码\code\single_double.c
文件 2491 2008-10-09 10:54 计算机图形学代码\code\square.c
目录 0 2008-12-12 20:42 计算机图形学代码\code
目录 0 2008-11-17 12:04 计算机图形学代码
----------- --------- ---------- ----- ----
16003 8
- 上一篇:H.264编码器流程图
- 下一篇:Todolist(最佳中文版时间管理工具)
相关资源
- 易语言矩阵的旋转源码易语言GDI矩阵
- 在s = 200 GeV的极化质子-质子碰撞中,
- 高能分解中的旋转螺旋方法:彩色玻
- 违反洛伦兹背景的量子校正旋转声学
- 在de-Sitter时空中旋转标准玻色子星
- Chern-Simons动态引力中的非扰动旋转黑
- 旋转活塞式流量计的测量原理
- delphi基于gdi+的图片旋转任意角度
- 旋转的宇宙弦引起的具有扭转效应的
- 旋转下的夸克强子连续性:涡旋连续
- 2DDL Pro 2D Dynamic Lights and Shadows
- 污水处理用旋转曝气机能效限定值及
- 易语言渐变旋转源码易语言渐变旋转
- 图片查看插件的使用,支持放大旋转
- OpenGL三茶壶三光源光源绕着茶壶旋转
- 旋转式单联合成碳膜电位器
- 关于在AdS / cft中旋转OPE块的评论
- 旋转的五维带电EMCS黑洞的阴影
- 旋转式电位器结构图_旋转式电位器怎
- 论文研究 - 非线性旋转子作为暗物质
- 具有自相互作用质量标量场的标量-张
- 旋转LED屏显示控制器设计方案
- PB实现图片旋转,转换操作
- CSS3制作3D旋转科幻球体动画特效
- stm32步进电机基本旋转控制
- VC 图像几何变换、图像平移、垂直水
- STM32F407 基于232或485的57&42;步进电机旋
- Flash立体魔方 会旋转的动画魔方.rar
- GB 755-2008 旋转电机定额和性能.pdf
- 使用canvas画线,位移,旋转,绘制五
评论
共有 条评论