¿¬½ÀÀå(´Ù¹ö¸®°í °©´Ï´Ù...)-³²±æ ±ÛÀÌ ÀÖÀ¸¸é ¹Î°¡ÃÌ¿¡ ³²°ÜÁֽðí, ȸ¿ø °¡ÀÔÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

2004/04/09 (18:47) from 203.247.201.190' of 203.247.201.190' Article Number : 993
Delete Modify _Àü Access : 4967 , Lines : 113
[³ëƼ]OpenGL-20030828 °í±ÞÅؽºÃÄ ±â¹ý
20030828 °í±ÞÅؽºÃÄ ±â¹ý
0828-1.´ÙÁß ÅؽºÃÄ
    -.OpenGLÀÇ È®ÀåÀ» »ç¿ë
    -.glext.h¸¦ include ½ÃÄÑ¾ß È®Àå±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
    -.NV_/ EXT_
  0.ÇöÀç OpneGL ±¸ÇöÀÌ ´ÙÁß ÅؽºÃĸµ È®ÀåÀ» Áö¿øÇÏ´Â Á¡°Ë
      (char *)glSetString(GL_EXTENSION);
    -.»ç¿ë °¡´ÉÇÑ ÅؽºÃÄ ´ÜÀ§ÀÇ ÃÖ´ë °¹¼ö
      glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTextureUnits);

  0.È®Àå ÇÔ¼ö¿¡ Á¢±ÙÇϱâ À§Çؼ­´Â ±× È®Àå ÇÔ¼ö¿¡ ´ëÇÑ ÁÖ¼Ò¸¦ ¾ò¾î¾ß ÇÑ´Ù.
   [¼±¾ð]
    PFNGLMULTITEXCOORD2FARBPROC  glMultiTexCoord2fARB = NULL;
    PFNGLACTIVETEXTUREARBPROC    glActiveTextureARB = NULL;
    PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB = NULL;
    int maxTextureUnits = 0;
     
//   glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTextureUnits);
         ; maxTextureUnitsÀÇ °ªÀÌ 1À̶ó¸é OpenGLÀÌ ´ÙÁß ÅؽºÃĸµÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù.
    glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)
wglGetProcAddress("glMultiTexCoord2fARB");
         ; ´ÙÁß ÅؽºÃĸµÀ» À§ÇÑ ÅؽºÃÄ ÁÂÇ¥µéÀ» ÁöÁ¤
    glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)
wglGetProcAddress("glActiveTextureARB");
         ; ÇöÀç ÅؽºÃÄ ´ÜÀ§¸¦ ¼³Á¤
    glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)
wglGetProcAddress("glClientActiveTextureARB");
         ; Æ÷ÀÎÅÍ ¹è¿­ ¸í·ÉµéÀ» À§ÇÑ ÇöÁ¦ ÅؽºÃÄ ´ÜÀ§¸¦ ¼³Á¤

   [ÃʱâÈ­]
    -1.µÎ Å×½ºÃÄ °´Ã¼µéÀ» ´ÙÁß ÅؽºÃĸµÀ» ÇÒ ¶§, µÎ °³ÀÇ ÅؽºÃÄ ´ÜÀ§µé·Î ¸¸µç´Ù.
     glActiveTextureARB(GL_TEXTURE0_ARB);
     glEnable(GL_TEXTURE_2D);
     glBindTexture(GL_TEXTURE_2D, Mult1->texID);
     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

     glActiveTextureARB(GL_TEXTURE1_ARB);
     glEnable(GL_TEXTURE_2D);
     glBindTexture(GL_TEXTURE_2D, Mult2->texID);
     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    
    -2.°¢°¢ÀÇ ¸ÊÀÇ uv¿¡ ´ëÇؼ­ Àû¿ëÇÒ È®´ë, Ãà¼Ò ¹æ¹ý ¼³Á¤
     glBindTexture(GL_TEXTURE_2D, Mult1->texID);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, Mult1->width, Mult1->height,
GL_RGB, GL_UNSIGNED_BYTE, Mult1->data);
     glBindTexture(GL_TEXTURE_2D, Mult2->texID);
     ...
    
    -3.µ¥ÀÌŸ ¸Þ·Î¸®¸¦ ÇØÁ¦; OpenGLÀº µ¥ÀÌŸ ID¸¦ »ý¼ºÇÑ ÈÄ data¿¡ Á¢±Ù
     ¿¹) free(Mult1->data);
 
   [·»´õ¸µ]
    ; ¸ÖƼÀ̹ǷΠº¹¼öÀÇ uvÁÂÇ¥ ¼³Á¤
     glBegin(GL_QUADS); // ¿À¸¥Âʸé
         glColor4f( 0.0f, 1.0f, 0.0f, 1.0f);
         glNormal3f(  1.0f,  0.0f,  0.0f );
         glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0f, 1.0f);
         glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 2.0f, 2.0f);
           glVertex3f(  1.0f,  1.0f, 1.0f );
           glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0f, 0.0f);
     ...

0828-2.ȯ°æ¸ÊÇÎ ;  ÁÖº¯ ȯ°æ Àüü¸¦ ¿ÏÀüÇÏ°Ô ¹Ý»çÇÏ´Â °´Ã¼¸¦ ·»´õ¸µÇÏ´Â ±â¹ý
    ¿¹) ȯ°æ ¸ÅÇο¡¼­ ÅؽºÃÄ ÁÂÇ¥µéÀ» ÀÚµ¿À¸·Î »ý¼ºÇÏ°Ô ÇÏ´Â ¿¹
    glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
    glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
    glEnable(GL_TEXTURE_GEN_S);
    glEnable(GL_TEXTURE_GEN_T);

0828-3.Á¶¸í¸ÊÇÎ

0828-4.´ÙÁßÆнº-´ÙÁßÅؽºÃĸµ

0828-5.µð½ºÇ÷¹ÀÌ ¸®½ºÆ®
  ; ÀÚÁÖ ¾²ÀÌ´Â ÀÏ·ÃÀÇ ¸í·ÉµéÀ» ¹Ì¸® ÄÄÆÄÀÏÇØ µÒÀ¸·Î½á ¼º´ÉÀ» Çâ»ó
    glCallList(); ·Î È£ÃâÇϱâ Àü¿¡ ¹Ì¸® ÇѹøÀº ½ÇÇà ÇؾßÇÑ´Ù.(ÃʱâÈ­ ºÎºÐ¿¡¼­ ½Ç½Ã)

  -.¸ñ·Ï »ý¼º
    GLuint glGenLists(GLsizei Num); ¸¸µé°íÀÚ ÇÏ´Â µð½ºÇ÷¹ÀÌ ¸ñ·Ï°¹¼ö
 
  #-> void glNewList(GLuint listName, GLenum mode);
         ¸ðµç OpenGL ¸í·É¾î    
  #<- void glEndlist();
   
  -.¸ñ·Ï ½ÇÇà ;  ¸ñ·Ï ¾È¿¡ ´ã±ä ¸í·ÉµéÀÌ ¼ø¼­´ë·Î ½ÇÇà        
    void glCallList(GLint listName);

0828-6.Á¤Á¡¹è¿­
[¼±¾ð]
  GLfloat vertices[] = {
-1.0f,  1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
1.0f,  1.0f, 1.0f  };
  glEnableClientState(GL_VERTEX_ARRAY);
  glVertexPointer(3, GL_FLOAT, 0, vertices);
[·»´õ¸µ]
-1.¹è¿­ ¼Ò¿ä¿¡¼­ Á÷Á¢ Àбâ
  glBegin(GL_QUADS);
     glArrayElement(0); ÇöÀç È°¼ºÈ­µÈ ¸ðµç ¹è¿­ÀÇ 0¹ø° Á¤Á¡¿¡ ´ëÇÑ µ¥ÀÌÅ͸¦ ¾ò´Â´Ù.
     glArrayElement(1);
     glArrayElement(2);
     glArrayElement(3);
  glEnd();
-2.À妽º¸¦ ÀÌ¿ë
  GLubyte frontIndex[] = {0,1,2,3};
  glDrawElements(GL_QUADS, 4, GL_UNSIGNED_BYTE, frontIndex);
-3.À妽º¸¦ ÀÌ¿ëÇÑ ¿¬¼ÓµÈ ¿ø¼Òµé¿¡ ´ëÇÑ Á¢±Ù
  void glDrawArray(GLenum, GLint first, CLsizei count);
     first¹ø° ¿ø¼ÒºÎÅÍ first+count-1¹øÂÅ ¿ø¼ÒµéÀ» »ç¿ëÇÏ¿© ±âÇÏ ÇÁ¸®¹ÌÅ͵éÀ» ±¸¼ºÇÑ´Ù.

Backward Forward Post Reply List