µÚÒ»·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

OpenGL³ÌÐò£¬Êä³ö ѧºÅ¡¢ÐÕÃû¡¢ÕÕÆ¬µÈÐÅÏ¢ Ö±Ïß¡¢ÏßÐÍ¡¢×ÖÌå³ÌÐò

À´Ô´£ºÓû§·ÖÏí ʱ¼ä£º2025/6/5 23:55:03 ±¾ÎÄÓÉloading ·ÖÏí ÏÂÔØÕâÆªÎĵµÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:xxxxxxx»òQQ£ºxxxxxx ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣

×÷Òµ1

ÐÕÃû °à¼¶ ѧºÅ ÈÕÆÚ

Ò»£º×÷ҵĿµÄ¼°ÒªÇó£º

²ÉÓÃOpenGL³ÌÐò£¬Êä³ö ѧºÅ¡¢ÐÕÃû¡¢ÕÕÆ¬µÈÐÅÏ¢¡£Ö±Ïß¡¢ÏßÐÍ¡¢×ÖÌå³ÌÐò¡£ ¶þ£ºÀíÂÛ»ù´¡£º

1.ʹÓÃGLUT½øÐд°¿Ú¹ÜÀí£º £¨1£©Óë´óСÓйصÄ

glutInitWindowSize(800,600); //ÓÃÀ´¶¨ÒåÏÔʾ´°¿ÚµÄ³õʼ»¯¿í¶ÈºÍ¸ß¶ÈµÄÏñËØÊý glutInitWindowPosition(200,200); //ÏÔʾ´°¿Ú×óÉϽÇÓ¦¸ÃÔÚÆÁÄ»×ó±ß½çÏòÓÒ50¸öÏñËØ¡¢ÆÁÄ»Éϱ߽ç100ÏñËØµÄλÖÃÉÏ¡£

gluOrth02D(0.0,200.0,0.0,150.0); //Õâ±íʾʹÓÃÕýͶӰ½«ÊÀ½ç×ø±êϵ¶þά¾ØÐÎÇøÓòµÄÄÚÈÝÓ³Éäµ½ÆÁÄ»ÉÏ¡£

ÒÔÉÏÈý¸ö¸ÅÄîÐèҪŪÇ壬ÆäÖÐgluOrtho2DÊÇÖ¸ÆÁÄ»ÇøÓò¶ÔÓ¦µÄÄ£ÐÍ×ø±ê·¶Î§£¬±ÈÈçºáÏò·¶Î§ÊÇ0µ½200Ã×£¬×ÝÏòÊÇ0µ½150Ã×£¬¶øºóÃæµÄglutInitWindowSizeÊÇÖ¸glutµÄ´°¿Úµ¯³öÀ´ºóÏà¶ÔÓÚÄãµçÄÔÆÁÄ»µÄλÖúʹóС£¬µ¥Î»ÊÇÏñËØ¡£ £¨2£©´°¿ÚÑÕÉ«ÉèÖÃ

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //Ö¸³öÏÔʾ´°¿ÚʹÓõ¥¸ö»º´æÇÒʹÓÃRGB£¨ºìÂÌÀ¶£©ÑÕɫģÐÍÀ´ÉèÖÃÑÕɫֵ

glClearColor(1.0,1.0,1.0,0.0) //ÉèÖô°¿Ú±³¾°ÑÕɫΪ°×É«£¬Ç°Èý¸ö±äÁ¿ÎªºìÂÌÀ¶·ÖÁ¿£¬×îºóÒ»¸öΪµ÷ºÍ²ÎÊý£¬Ï൱ÓÚ͸Ã÷¶È¡£

glClear(GL_COLOR_BUFFER_BIT); //Èø³Óè´°¿ÚµÄÑÕÉ«ÔÚÆÁÄ»ÉÏÏÔʾ¡£

Glcolor3f(1.0,0.0,0.0); //ÏÔʾ³¡¾°Öи÷ÖÖ¶ÔÏóµÄÑÕÉ«£¬×ó±ßµÄ¼òµ¥µÄÉèÖÃΪºìÉ« £¨3£©ÆäËû

glutInit(&argc, argv); //GLUT³õʼ»¯º¯Êý

glutCreateWindow(\ //ÏÔʾ´°¿Ú´´½¨¶¨Ò»¸ö±êÌâ

glutDisplayFunc(Display); //½«´´½¨µÄͼÐε͍Òå´«µÝ¸øGLUTº¯Êý glutMainLoop(); //´´½¨µÄ´°¿Ú¼°ÆäÖеÄͼÐÎÄÚÈݼ¤»î 2.Êä³öͼԪ

£¨1£©OpenGL»­µãº¯Êý

OpenGLÖж¨ÒåµÄµã·ÅÔÚº¯ÊýglBegin()ºÍglEnd()Ö®¼ä£¬Óк¯ÊýglBegin()µÄ²ÎÊýÖ¸¶¨»æÖÆÍ¼ÔªµÄÀàÐÍ¡£

ÔÚOpenGLÖлæÖÆÒ»¸öµãʱ£¬µã´óСµÄĬÈÏÖµÊÇÒ»¸öÏñËØ¡£¿ÉÒÔÓú¯ÊýglPointSize(GLfloat size)ÐÞ¸ÄÕâ¸öÖµ¡£Õâ¸öº¯Êý²ÉÓÃÒ»¸ö²ÎÊýÀ´Ö¸¶¨»­µãʱÒÔÏñËØÎªµ¥Î»µÄ½üËÆÖ±¾¶¡£µ«ÊDz»ÊÇÈÎÒâ´óСµã¶¼Ö§³Ö£¬Í¨³£Ê¹ÓÃÏÂÃæµÄ´úÂëÀ´»ñÈ¡µã´óСµÄ·¶Î§ºÍËûÃǵÄÖ®¼ä×îСµÄÖмäÖµ£º GLfloat sizes[2];//±£´æ»æÖƵãµÄ³ß´ç·¶Î§

GLfloat step;//±£´æ»æÖƵã³ß´çµÄ²½³¤ glGetFloatv(GL_POINT_SIZE_RANGE,sizes);

glGetFloatv(GL_POINT_SIZE_RANULARITY,&step);

ÔÚOpenGL³ÌÐòÖУ¬ÎÒÃdz£¿ÉÒÔÀûÓÃÀëÉ¢µÄµãÀ´ÄâºÏһЩ³£¼ûµÄÇúÏߣ¬ÈçÔ²£¬ÂÝÐýÏߵȡ£ (2)OpenGLµÄ»­Ïߺ¯Êý

ʹÓÃģʽGL_LINES¿ÉÒÔÔÚÁ½µãÖ®¼ä»­Ïߣ»

ÓÐʱÎÒÃÇÐèÒªÔÚһϵÁеĶ¥µãÖ®¼ä»æÖÆÁ¬ÐøÖ±Ïߣ¬´ËʱÐèÒªÓõ½GL_LINE_STRIP»òGL_LINE_LOOPģʽ¡£GL_LINE_STRIPģʽ¿ÉÒÔ¸ù¾ÝÖ¸¶¨µÄһϵÁж¥µã£¬´ÓÒ»¸ö¶¥µãµ½ÁíÒ»¸ö¶¥µãÓÃÁ¬ÐøµÄÏ߶λ­Ïß¡£ÌرðµÄ£¬µ±ÑØ×ÅijÌõÇúÏßÖ¸¶¨Ò»ÏµÁп¿µÄºÜ½üµÄµã£¬Ê¹ÓÃGL_LINE_STRIPģʽ¿ÉÒÔ»æÖÆÒ»ÌõÇúÏß¡£

GL_LINE_LOOPģʽÓëGL_LINE_STRIPģʽÀàËÆ£¬Ö»ÊÇ»áÔÚÖ¸¶¨µÄ×îºóÒ»¸ö¶¥µãÓëµÚÒ»¸ö¶¥µãÖ®¼ä»­×îºóÒ»ÌõÏß¡£

Ö±ÏßµÄÊôÐÔ°üÀ¨Ïß¿íºÍÏßÐÍ¡£ÔÚOpenGLÖпÉÓà void glLineWidth(GLfloat width)Ö¸¶¨Ïß¿í¡£ ¿ÉÒÔÓÃÏÂÃæµÄ´úÂëÀ´»ñÈ¡Ïß¿í·¶Î§ºÍËûÃǵÄÖ®¼äµÄ×îС¼ä¸ô£º GLfloat sizes[2]; //±£´æÏß¿íµÄ³ß´ç·¶Î§ GLfloat step; //±£´æÏß¿í³ß´çµÄ×îС¼ä¸ô glGetFloarv(GL_LINE_WIDTH_RANGE,sizes);

glGetFloarv(GL_LINE_WIDTH_GRANULARITY,&step);

Êý×ésizesÖб£´æÁËglLineWidthµÄ×îСÓÐЧֵºÍ×î´óÓÐЧֵ£¬¶ø±äÁ¿step½«±£´æÏß¿íÖ®¼äÔÊÐíµÄ×îСÔöÁ¿¡£

MicrosoftµÄOpenGLʵÏÖÔÊÐíÏß¿í´Ó0.5µ½10.0£¬×îСÔöÁ¿Îª0.125. £¨3£©OpenGLµÄ×Ö·ûÉú³Éº¯Êý ×Ö·ûÖ¸Êý×Ö¡¢×Öĸ¡¢ºº×ֵȷûºÅ¡£

¼ÆËã»úÖÐ×Ö·ûÓÉÒ»¸öÊý×Ö±àÂëΨһ±êʶ¡£

¡°ÃÀ¹úÐÅÏ¢½»»»Óñê×¼´úÂ뼯¡±¼ò³ÆASCIIÂë¡£ËüÊÇÓÃ7λ¶þ½øÖÆÊý½øÐбàÂë±íʾ128¸ö×Ö·û ºº×Ö±àÂëµÄ¹ú¼Ò±ê×¼×Ö·û¼¯¡£Ã¿¸ö·ûºÅÓÉÒ»¸öÇøÂëºÍÒ»¸öλÂ루2×Ö½Ú£©¹²Í¬±êʶ¡£ Çø·ÖASCIIÂëÓ뺺×Ö±àÂ룬²ÉÓÃ×Ö½ÚµÄ×î¸ßλÀ´±êʶ

GlutBitmapCharacter(front,charater) //cÊÇ×Ö·ûµÄASCIIÂ룬¸Ãº¯ÊýÏÔʾλͼ×Ö·û glutStrokeCharacter(front,charater) //º¯ÊýÏÔʾÂÖÀª×Ö·û¡£

Èý£ºËã·¨¼°Éè¼Æ·ÖÎö

Ëã·¨1£ºÊä³öѧºÅ¼°Ãû×Ö £¨1£© Éè¼Æ·ÖÎö

Êä³öºº×ÖºÍÓ¢ÎÄ×Ö·û£¬ÏÔʾÖÐÎĺÍÏÔʾӢÎIJ¢ÎÞ²»Í¬£¬Í¬ÑùÊǰÑÒªÏÔʾµÄ×Ö·û×ö³ÉÏÔʾÁÐ±í£¬È»ºó½øÐе÷Óᣵ«ÊÇÓÐÒ»¸öÎÊÌ⣬ӢÎÄ×ÖĸºÜÉÙ£¬×î¶àÖ»Óм¸°Ù¸ö£¬ÎªÃ¿¸ö×Öĸ´´½¨Ò»¸öÏÔʾÁÐ±í£¬Ã»ÓÐÎÊÌâ¡£µ«ÊǺº×ÖÓзdz£¶à¸ö£¬Èç¹ûÿ¸öºº×Ö¶¼²úÉúÒ»¸öÏÔʾÁÐ±í£¬ÕâÊDz»ÇÐʵ¼ÊµÄ¡£ÕâÀﻹ¾­³£Éæ¼°µ½ÖÐÎÄÂÒÂëµÄÎÊÌ⣬Ҳ¾ÍÊÇ˵ÖÐÎÄÕ¼Á½¸ö×Ö·û£¬Ó¢ÎÄÕ¼Ò»¸ö×Ö·û£¬µ±È»°ÑÁ½¸ö×Ö·ûµÄ¶«Î÷·Åµ½Ò»¸ö×Ö·ûµÄ¿Õ¼äÀïÃæ»á²úÉú½Ø¶Ï£¬×ÔÈ»²»ÄÜÕý³£ÏÔʾ¡£Ôڽ̲ĵ±ÖÐûÓÐÖÐÎÄ×Ö·ûµÄÊä³ö£¬Ö»Óлù±¾µÄÓ¢ÎÄ×Ö·ûÊä³ö£¬Òò´ËÔÚÍøÉϰ汾£¬ÕÒµ½Ê¹ÓÃÁËMultiByteToWideCharÕâ¸öº¯ÊýµÄ£¬»ù±¾É϶¼Ã»ÓгöÏÖÂÒÂ룬ËùÒÔÓÃÕâ¸öº¯Êý¡£wglUseFontBitmapsWº¯ÊýÊÇwglUseFontBitmapsº¯ÊýµÄ¿í×Ö·û°æ±¾£¬ËüÈÏΪ×Ö·û¶¼Õ¼Á½¸ö×Ö½Ú¡£

£¨2£© º¯Êý·ÖÎö Ö÷Òªº¯Êý ×÷Óà drawCNString(const char* str) IsDBCSLeadByte(str[i]) MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, -1, wstring, len); Êä³ö×Ö·û³ÌÐò ÅжÏ×Ö·ûÊÇ·ñΪÁ½×Ö½Ú ½«»ìºÏ×Ö·ûת»¯Îª¿í×Ö·û£¬wglUseFontBitmapsWÈÏΪÁ½¸ö×Ö½ÚΪһ¸ö×Ö·û selectFont(int size, int charset, const char ÉèÖÃ×Ö·ûµÄ×ÖÌå * face) Display(void) glRasterPos2f(-0.8f, 0.6f); ´´½¨Í¼Ðε͍Òå ÉèÖÃ×Ö·ûµÄÊä³öλÖà £¨3£© ÔËÐнá¹û

Ëã·¨2£ºÖ±ÏßÏßÐͺ¯Êý £¨1£©Éè¼Æ·ÖÎö

OpenglÖÐʹÓÃͼԪ³£Á¿¿ÉÒԵõ½¶àÖÖ»­Ïߵķ½·¨£¬ÔÚ»­ÏßµÄͬʱ¿ÉÒÔ¶ÔÏß½øÐв»Í¬µÄÊôÐÔÉèÖã¬Ïß¿íÊôÐÔ£¬ÏßÐÍÊôÐÔ£¬Í¨¹ý¶ÔµãµÄÉèÖ㬶ÔÏßÐÔµÄÉèÖÿÉÒԵõ½²»Í¬µÄÏ߶Ρ£

£¨2£©Ëã·¨ÖÐÖ÷Òªº¯Êý·ÖÎö Ö÷Òªº¯Êý RenderScene() glPointSize(curSize) glVertex3f(20.0f,150.0f,0.0f) glLineStipple(1,0x00ff); glutReshapeFunc() £¨3£©ÔËÐнá¹û

×÷Óà ´´½¨Í¼Ðε͍Òå ÉèÖõãµÄ´óС opengl»­µãº¯Êý ÉèÖõ㻮Ïßģʽ ¿ØÖÆ´°¿Ú´óС·¶Î§µÄº¯Êý

¸½Â¼£º

³ÌÐòÔ´´úÂëÈçÏ£º

Ëã·¨1£ºÊä³öѧºÅ¼°Ãû×Ö

#include

#include \

void drawCNString(const char* str) { int len, i;

wchar_t* wstring;

HDC hDC = wglGetCurrentDC(); GLuint list = glGenLists(1);

// ¼ÆËã×Ö·ûµÄ¸öÊý

// Èç¹ûÊÇË«×Ö½Ú×Ö·ûµÄ£¨±ÈÈçÖÐÎÄ×Ö·û£©£¬Á½¸ö×Ö½Ú²ÅËãÒ»¸ö×Ö·û // ·ñÔòÒ»¸ö×Ö½ÚËãÒ»¸ö×Ö·û len = 0;

for(i=0; str[i]!='\\0'; ++i) {

if( IsDBCSLeadByte(str[i]) ) ++i; ++len; }

// ½«»ìºÏ×Ö·ûת»¯Îª¿í×Ö·û

wstring = (wchar_t*)malloc((len+1) * sizeof(wchar_t));

MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, -1, wstring, len); wstring[len] = L'\\0';

// Öð¸öÊä³ö×Ö·û for(i=0; i

wglUseFontBitmapsW(hDC, wstring[i], 1, list); glCallList(list); }

// »ØÊÕËùÓÐÁÙʱ×ÊÔ´ free(wstring);

glDeleteLists(list, 1); }

void selectFont(int size, int charset, const char * face) {

HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 0, 0, 0, charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face);

HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont); DeleteObject(hOldFont); }

void Display(void)

OpenGL³ÌÐò£¬Êä³ö ѧºÅ¡¢ÐÕÃû¡¢ÕÕÆ¬µÈÐÅÏ¢ Ö±Ïß¡¢ÏßÐÍ¡¢×ÖÌå³ÌÐò.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.diyifanwen.net/c4yn920ndjl4ncj33rqm3_1.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©
ÈÈÃÅÍÆ¼ö
Copyright © 2012-2023 µÚÒ»·¶ÎÄÍø °æÈ¨ËùÓÐ ÃâÔðÉùÃ÷ | ÁªÏµÎÒÃÇ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£ºxxxxxx ÓÊÏ䣺xxxxxx@qq.com
ÓåICP±¸2023013149ºÅ
Top