用OpenGL绘制正弦曲线.docx
- 文档编号:3240972
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:23
- 大小:38.13KB
用OpenGL绘制正弦曲线.docx
《用OpenGL绘制正弦曲线.docx》由会员分享,可在线阅读,更多相关《用OpenGL绘制正弦曲线.docx(23页珍藏版)》请在冰豆网上搜索。
用OpenGL绘制正弦曲线
//这个是一个效果图,仅仅是演示一下。
///本文档基于NeHe的教程,在此感谢他的无私奉献,让大家学会了怎样使用OpenGL。
//这段生成sin数据
intmain(intargc,char**argv)
{
for(inti=-360;i<=360;i+=10){
cout<<"{"<
}
}
//生成的数据放在这里
typedefstructtagVector{
floatX,Y,Z;
}VECTOR,*PVECTOR;
VECTORvec[]={
{-18,-0.000220392,0},
{-17,2.60451,0},
{-17,5.13011,0},
{-16,7.49983,0},
{-16,9.64166,0},
{-15,11.4905,0},
{-15,12.9903,0},
{-14,14.0953,0},
{-14,14.7721,0},
{-13,15,0},
{-13,14.7721,0},
{-12,14.0954,0},
{-12,12.9905,0},
{-11,11.4908,0},
{-11,9.64192,0},
{-10,7.50011,0},
{-10,5.13042,0},
{-9,2.60484,0},
{-9,0.000110196,0},
{-8,-2.60462,0},
{-8,-5.13021,0},
{-7,-7.49992,0},
{-7,-9.64175,0},
{-6,-11.4906,0},
{-6,-12.9903,0},
{-5,-14.0954,0},
{-5,-14.7721,0},
{-4,-15,0},
{-4,-14.7721,0},
{-3,-14.0954,0},
{-3,-12.9904,0},
{-2,-11.4907,0},
{-2,-9.64183,0},
{-1,-7.50002,0},
{-1,-5.13031,0},
{0,-2.60473,0},
{0,0,0},
{0,2.60473,0},
{1,5.13031,0},
{1,7.50002,0},
{2,9.64183,0},
{2,11.4907,0},
{3,12.9904,0},
{3,14.0954,0},
{4,14.7721,0},
{4,15,0},
{5,14.7721,0},
{5,14.0954,0},
{6,12.9903,0},
{6,11.4906,0},
{7,9.64175,0},
{7,7.49992,0},
{8,5.13021,0},
{8,2.60462,0},
{9,-0.000110196,0},
{9,-2.60484,0},
{10,-5.13042,0},
{10,-7.50011,0},
{11,-9.64192,0},
{11,-11.4908,0},
{12,-12.9905,0},
{12,-14.0954,0},
{13,-14.7721,0},
{13,-15,0},
{14,-14.7721,0},
{14,-14.0953,0},
{15,-12.9903,0},
{15,-11.4905,0},
{16,-9.64166,0},
{16,-7.49983,0},
{17,-5.13011,0},
{17,-2.60451,0},
{18,0.000220392,0}
};
//在这里进行调用绘制
#include
#include
#include
#include
#include
#include"NeHeGL.h"//HeaderFileForNeHeGL
#include"Data.h"//让数据单独在一个文件里
#pragmacomment(lib,"opengl32.lib")//SearchForOpenGL32.libWhileLinking
#pragmacomment(lib,"glu32.lib")//SearchForGLu32.libWhileLinking
usingnamespacestd;
#ifndefCDS_FULLSCREEN//CDS_FULLSCREENIsNotDefinedBySome
#defineCDS_FULLSCREEN4//Compilers.ByDefiningItThisWay,
#endif//WeCanAvoidErrors
GL_Window*g_window;
Keys*g_keys;
floattimeElapsed=0;//ElapsedTimeInThe
GLuintbase;//BaseDisplayListForTheFontSet
GLYPHMETRICSFLOATgmf[256];//StorageForInformationAboutOurOutlineFontCharacters
GLvoidBuildFont(GL_Window*window)//BuildOurBitmapFont
{
HFONTfont;//WindowsFontID
base=glGenLists(256);//StorageFor256Characters
font=CreateFont(-12,//HeightOfFont
0,//WidthOfFont
0,//AngleOfEscapement
0,//OrientationAngle
FW_BOLD,//FontWeight
FALSE,//Italic
FALSE,//Underline
FALSE,//Strikeout
ANSI_CHARSET,//CharacterSetIdentifier
OUT_TT_PRECIS,//OutputPrecision
CLIP_DEFAULT_PRECIS,//ClippingPrecision
ANTIALIASED_QUALITY,//OutputQuality
FF_DONTCARE|DEFAULT_PITCH,//FamilyAndPitch
NULL);//FontName
HDChDC=window->hDC;
SelectObject(hDC,font);//SelectsTheFontWeCreated
wglUseFontOutlines(hDC,//SelectTheCurrentDC
0,//StartingCharacter
255,//NumberOfDisplayListsToBuild
base,//StartingDisplayLists
0.0f,//DeviationFromTheTrueOutlines
0.0f,//FontThicknessInTheZDirection
WGL_FONT_POLYGONS,//UsePolygons,NotLines
gmf);//AddressOfBufferToRecieveData
}
GLvoidKillFont(GLvoid)//DeleteTheFont
{
glDeleteLists(base,256);//DeleteAll256Characters
}
GLvoidglPrint(floatx,floaty,floatz,constchar*fmt,...)//CustomGL"Print"Routine
{
floatlength=0;//UsedToFindTheLengthOfTheText
chartext[256];//HoldsOurString
va_listap;//PointerToListOfArguments
if(fmt==NULL)//IfThere'sNoText
return;//DoNothing
va_start(ap,fmt);//ParsesTheStringForVariables
vsprintf(text,fmt,ap);//AndConvertsSymbolsToActualNumbers
va_end(ap);//ResultsAreStoredInText
for(unsignedintloop=0;loop<(strlen(text));loop++)//LoopToFindTextLength
{
length+=gmf[text[loop]].gmfCellIncX;//IncreaseLengthByEachCharactersWidth
}
glTranslatef(x-length,y,z);//PositionTextO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenGL 绘制 正弦曲线