实验一 画一个自己喜欢的图形.docx
- 文档编号:25262979
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:7
- 大小:24.05KB
实验一 画一个自己喜欢的图形.docx
《实验一 画一个自己喜欢的图形.docx》由会员分享,可在线阅读,更多相关《实验一 画一个自己喜欢的图形.docx(7页珍藏版)》请在冰豆网上搜索。
实验一画一个自己喜欢的图形
湘潭大学实验报告
课程名称计算机图形学实验名称画图页数
专业计算机科学与技术班级12级计算机2班同组者姓名
学号2012600719姓名黄柳实验日期____2015-4-3____
一、实验目的
1.了解OpenGL图形库的功能和结构;
2.学习了解OpenGL程序的基本结构,及常用函数;
二、实验内容和要求
画一个三角形。
3、实验方案设计
画出三角形的三条边,就得到了一个三角形。
然后根据自己的喜好,给三角形涂色。
四、程序运行和实验结果说明和分析。
五、性能、扩展性等方面存在的不足和可能的改进之处。
我还可以画出更加漂亮的图形,需要多练习。
我认为解决以上问题只有通过在以后的学习,对图形学和OpenGL有更深的了解才有可能解决该问题。
同时要彻底学好C++这门语言,没有精通的语言,就无法实现更完美的功能和设计。
这次实践增强了我的动手能力,提高和巩固了图形学方面的知识,特别是软件方面。
让我认识到把理论应用到实践中去是多么重要。
这个过程中,我花费了大量的时间和精力,更重要的是,我在学会实践的基础上,同时还懂得合作精神的重要性,学会了互相学习。
附件一源程序
#include
#include
LRESULTCALLBACKWindowProc(HWND,UINT,WPARAM,LPARAM);
voidEnableOpenGL(HWNDhwnd,HDC*,HGLRC*);
voidDisableOpenGL(HWND,HDC,HGLRC);
intWINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
{
WNDCLASSEXwcex;
HWNDhwnd;
HDChDC;
HGLRChRC;
MSGmsg;
BOOLbQuit=FALSE;
floattheta=0.0f;
/*registerwindowclass*/
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_OWNDC;
wcex.lpfnWndProc=WindowProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wcex.lpszMenuName=NULL;
wcex.lpszClassName="GLSample";
wcex.hIconSm=LoadIcon(NULL,IDI_APPLICATION);;
if(!
RegisterClassEx(&wcex))
return0;
/*createmainwindow*/
hwnd=CreateWindowEx(0,
"GLSample",
"第一个画图程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
256,
256,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
/*enableOpenGLforthewindow*/
EnableOpenGL(hwnd,&hDC,&hRC);
/*programmainloop*/
while(!
bQuit)
{
/*checkformessages*/
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
/*handleordispatchmessages*/
if(msg.message==WM_QUIT)
{
bQuit=TRUE;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
/*OpenGLanimationcodegoeshere*/
glClearColor(0.0f,0.0f,0.0f,0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(theta,0.0f,0.0f,1.0f);
glBegin(GL_TRIANGLES);
glColor3f(1.0f,0.0f,0.0f);glVertex2f(0.0f,1.0f);
glColor3f(0.0f,1.0f,0.0f);glVertex2f(0.87f,-0.5f);
glColor3f(0.0f,0.0f,1.0f);glVertex2f(-0.87f,-0.5f);
glEnd();
glPopMatrix();
SwapBuffers(hDC);
theta+=1.0f;
Sleep
(1);
}
}
/*shutdownOpenGL*/
DisableOpenGL(hwnd,hDC,hRC);
/*destroythewindowexplicitly*/
DestroyWindow(hwnd);
returnmsg.wParam;
}
LRESULTCALLBACKWindowProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam)
{
switch(uMsg)
{
caseWM_CLOSE:
PostQuitMessage(0);
break;
caseWM_DESTROY:
return0;
caseWM_KEYDOWN:
{
switch(wParam)
{
caseVK_ESCAPE:
PostQuitMessage(0);
break;
}
}
break;
default:
returnDefWindowProc(hwnd,uMsg,wParam,lParam);
}
return0;
}
voidEnableOpenGL(HWNDhwnd,HDC*hDC,HGLRC*hRC)
{
PIXELFORMATDESCRIPTORpfd;
intiFormat;
/*getthedevicecontext(DC)*/
*hDC=GetDC(hwnd);
/*setthepixelformatfortheDC*/
ZeroMemory(&pfd,sizeof(pfd));
pfd.nSize=sizeof(pfd);
pfd.nVersion=1;
pfd.dwFlags=PFD_DRAW_TO_WINDOW|
PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER;
pfd.iPixelType=PFD_TYPE_RGBA;
pfd.cColorBits=24;
pfd.cDepthBits=16;
pfd.iLayerType=PFD_MAIN_PLANE;
iFormat=ChoosePixelFormat(*hDC,&pfd);
SetPixelFormat(*hDC,iFormat,&pfd);
/*createandenabletherendercontext(RC)*/
*hRC=wglCreateContext(*hDC);
wglMakeCurrent(*hDC,*hRC);
}
voidDisableOpenGL(HWNDhwnd,HDChDC,HGLRChRC)
{
wglMakeCurrent(NULL,NULL);
wglDeleteContext(hRC);
ReleaseDC(hwnd,hDC);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验一 画一个自己喜欢的图形 实验 一个 自己 喜欢 图形