用OpenGL绘制正弦曲线Word文档格式.docx
《用OpenGL绘制正弦曲线Word文档格式.docx》由会员分享,可在线阅读,更多相关《用OpenGL绘制正弦曲线Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
}
}
//生成的数据放在这里
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<
windows.h>
//HeaderFileForWindows
cstdio>
//HeaderFileForStandardInput/Output
cmath>
gl\gl.h>
//HeaderFileForTheOpenGL32Library
gl\glu.h>
//HeaderFileForTheGLu32Library
#include"
NeHeGL.h"
//HeaderFileForNeHeGL
Data.h"
//让数据单独在一个文件里
#pragmacomment(lib,"
opengl32.lib"
)//SearchForOpenGL32.libWhileLinking
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