计算机图形学方面有关论文范文资料,与计算机图形学基础相关论文答辩
本论文是一篇计算机图形学方面有关论文答辩,关于计算机图形学基础相关开题报告范文。免费优秀的关于计算机图形学及计算机及数据结构方面论文范文资料,适合计算机图形学论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
itlebar.Callinitializationroutines.*Registercallbackfunctiontodisplaygraphics.
*Entermainloopandprocessevents.
*/
intmain(intargc,char**argv)
{
glutInit(&,argc,argv),
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB),
glutInitWindowSize(250,250),
glutInitWindowPosition(100,100),
glutCreateWindow("hello"),
init(),
glutDisplayFunc(display),
glutMainLoop(),
return0,/*ANSICrequiresmaintoreturnint.*/
}
在Linux环境下开发OpenGL程序,阅读nehe的源代码并注释,这是基于SDL的.第一篇《简单的OpenGL程序》
只有个黑色的窗口,-)
###################lesson01.c#######################
#include<,stdio.h>,
#include<,stdlib.h>,
#include<,GL/gl.h>,
#include<,GL/glu.h>,
#include"SDL.h"
/*屏幕宽,高和颜色位数*/
#defineSCREEN_WIDTH640
#defineSCREEN_HEIGHT480
#defineSCREEN_BPP16
/*设置布尔值*/
#defineTRUE1
#defineFALSE0
/*SDL表面*/
SDL_Surface*surface,
/*用来释放/销毁程序资源,并返回桌面*/
voidQuit(intreturnCode)
{
/*清除窗口*/
SDL_Quit(),
/*退出*/
exit(returnCode),
}
/*窗口更改后重新设置视点(观察点)*/
intresizeWindow(intwidth,intheight)
{
/*高与宽的比例*/
GLfloatratio,
/*防止除零*/
if(height等于等于0)
height等于1,
ratio等于(GLfloat)width/(GLfloat)height,
/*设置视点*/
glViewport(0,0,(GLint)width,(GLint)height),
/*选择投影矩阵*/
glMatrixMode(GL_PROJECTION),
glLoadIdentity(),
/*设置透视*/
gluPerspective(45.0f,ratio,0.1f,100.0f),
/*选择模型观察矩阵*/
glMatrixMode(GL_MODELVIEW),
/*重置模型观察矩阵*/
glLoadIdentity(),
return(TRUE),
}
/*获得键盘按键事件*/
voidhandleKeyPress(SDL_keysym*keysym)
{
switch(keysym->,sym)
{
caseSDLK_ESCAPE:
/*ESC按下时*/
Quit(0),
break,
caseSDLK_F1:
/*F1按下时
*触发全屏模式
*/
SDL_WM_ToggleFullScreen(surface),
break,
default:
break,
}
return,
}
/*OpenGL初始化函数*/
intinitGL(GLvoid)
{
/*启用阴影平滑*/
glShadeModel(GL_SMOOTH),
/*设置黑色背景*/
glClearColor(0.0f,0.0f,0.0f,0.0f),
/*设置深度缓存*/
glClearDepth(1.0f),
/*启用深度测试*/
glEnable(GL_DEPTH_TEST),
/*所作深度测试类型*/
glDepthFunc(GL_LEQUAL),
/*告知系统对透视进行修正*/
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST),
return(TRUE),
}
/*绘制代码*/
intdrawGLScene(GLvoid)
{
/*计算fps*/
staticGLintT0等于0,
staticGLintFrames等于0,
/*清除屏幕及深度缓冲*/
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT),
glLoadIdentity(),
/*绘制屏幕*/
SDL_GL_SwapBuffers(),
/*自增长桢的计算*/
Frames++,
{
GLintt等于SDL_GetTicks(),
if(t-T0>,等于5000){
GLfloatseconds等于(t-T0)/1000.0,
GLfloatfps等于Frames/seconds,
printf("%dframesin%gseconds等于%gFPS\n",Frames,seconds,fps),
T0等于t,
Frames等于0,
}
}
return(TRUE),
}
/*程序主函数*/
intmain(intargc,char**argv)
{
/*通过SDL_SetVideoMode标志*/
intvideoFlags,
/*主循环变量*/
intdone等于FALSE,
/*SDL事件*/
SDL_Eventevent,
/*显示一些信息在屏幕*/
constSDL_VideoInfo*videoInfo,
/*窗口激活标志*/
intisActive等于TRUE,
/*初始化SDL*/
if(SDL_Init(SDL_INIT_VIDEO)<,0)
{
fprintf(stderr,"Videoinitializationfailed:%s\n",
SDL_GetError()),
Quit(1),
}
/*获得视频信息*/
videoInfo等于SDL_GetVideoInfo(),
if(!videoInfo)
{
fprintf(stderr,"Videoqueryfailed:%s\n",
SDL_GetError()),
Quit(1),
}
/*通过SDL_SetVideoMode标志*/
videoFlags等于SDL_OPENGL,/*在SDL中启用OpenGL*/
videoFlags|等于SDL_GL_DOUBLEBUFFER,/*启用双缓冲*/
videoFlags|等于SDL_HWPALETTE,/*硬件保存调色板*/
videoFlags|等于SDL_RESIZABLE,/*窗口可更改*/
/*检测表面是否可以保存入内存*/
if(videoInfo->,hw_available)
videoFlags|等于SDL_HWSURFACE,
else
videoFlags|等于SDL_SWSURFACE,
/*测试
计算机图形学方面有关论文范文资料,与计算机图形学基础相关论文答辩参考文献资料: