O pen gl

279 views

Published on

Published in: Business
  • Be the first to comment

  • Be the first to like this

O pen gl

  1. 1. ຍຈຣາງຄາຌ OPenGL ຺• ວາ຅າຌລວຌ: ວາ຅າຌ ຌຢຌກຸຌ ລຄຎຨະຽລຈ ີ ັ ິ ີ• ຆໃ ກູຠ: GLbs ຦ວຄ 4CS3 ື ໃ ໄ• 1. ຌ. ໜຸຄໜິຄ ກຈຉວາລາິ ິ• 2. ຋. ພຸຈ຋ະ຤ຌ ັ• 3. ຋. ຅ຌ຋ະຽລຠ ັ ີ
  2. 2. I. ຃຤າຠຽຎັຌຠາ. ລະຍຍ຋າວຈຂວຄ OpenGL, ລະຍຍ 1.0, ຊກຎວງ ັ ໍ ິ ັ ຶ ໃ ວວກຠາຽຠໃ ວຽຈວຌຠຄກວຌຎີ 1992 ຿ຈງ Mark Segal ື ື ັ ັ ັໄ ໃ ັໄ ຾ຣະ Kurt Akeley. ຌຍຉຄ຾ຉຌຌຠາ, OpenGL ແຈຽຎັຌ ໄ ຍາຄ຿ວກາຈຂະ຦ງາງ ຈ຤ງກາຌຎວງຠຣຌເ຦ຠຂວຄ ໄ ໃ ີ ຸໄ ໃ ລະຽພາະ OpenGL ຾ຣະ ຉໃ ໍຉາຌ຋ໃ ີຂະ຦ງາງຽ຤ຣາເ຦ຠ ໃ ໄ ລາຠາຈຽພໃ ີຠຽຉຠແຈມາຄຄາງຈາງແຈຣາງຣກວກລວຌ. ຾ຉ ໃ ີ ໄ ໃ ໃ ໄ ັ ັ ຣະລະຍຍເ຦ຠຂວຄ OpenGL tends, OpenGL ຽຎີຈຨູຍ ັ ໃ ພາຍ ຾ຠຌຣະ຦຤າຄພາລາ, ໃ ໃ API ຦ົາງຽ຤຋ີລາຣຍ ໍ ັ rendering ຨູຍພາຍ຃ວຠພິ຤ຽຉີ 2D 3D ຊກຌາເຆມາຄ ື ໍ ໄ ໃ ກ຤າຄຂ຤າຄ ໄ ຨູຍພາຍ Animation ຾ຠຌຽກຈ຅າກກາຌຂຼຌ຿຃ຈຉາຄໂ ໃ ີ ໃ ຿ຈງກາຌເຆຎະລຠຎະລາຌ຿຃ຈລຉາຄກາຌຽຎັຌຨູຍ຅າຣວຄ຋ໃ ີ ໄ ຺ ີ ໃ ໍ ລາຠາຈໝຸຌເຈ ໄ
  3. 3. II. ຋ໃ ີຠາຂວຄ຿຃ຈ ີໄ ຿຃ຄ​ລາຄ​ຂວຄ OpenGL ​ເຌ​ກາຌ​ຂຼຌ Project ຌ​ຎະກວຍຠ ີ 4 ໄ ພາກລ຤ຌ຃: ໃ ື• ພາກ​ລ຤ຌ Header file ໃ• ພາກລ຤ຌກາຌກາຌຈ຃າຽຣໃ ຠຉຌ void init() ໃ ໍ ຺ ໃ ີ ຺ໄ• ພາກລ຤ຌກາຌກາຌຈ void Display() ໃ ໍ ຺• ພາກລ຤ຌ຦ົກ void main() ໃ ັ
  4. 4. 1. ພາກ​ລ຤ຌ Header file ໃ #include <GL/glut.h>2. ພາກລ຤ຌກາຌກາຌຈ຃າຽຣໃ ຠຉຌ void init() ໃ ໍ ຺ ໃ ີ ໄ຺ void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); // ກາຌຈລຂວຄ ໍ ຺ ີ ຅ລະ຾ຈຄຏຌ ໍ ຺ }
  5. 5. 3. ພາກລ຤ຌກາຌກ າຌຈ void Display() ໃ ຺ void display (void) { glClear (GL_COLOR_BUFFER_BIT); //຃ ໍາລໃຄຣຶຍລີເຌຍ ັຍຽຟີ ລ຋ໃ ີຠີ ັ ີ ຠາກວຌ຾ຣ຤຅ໃ ຄກາຌ ຺ຈລີເໝຉາຠ຋ໃ ີກາຌ ຺ຈ ໃ ໄ ຶ ໍ ໃ ໍ glClearColor(1.0, 1.0, 1.0, 0.0); //ລີ຋ ໍາວິຈຂວຄຨູຍ glPushMatrix(); glutSolidTeapot(0.5); // Draw the Teapot glPopMatrix(); glutSwapBuffers(); }
  6. 6. void keyboard (unsigned char key, int x, int y){ switch (key) { case r: // ຃ີ r glColor3f(1.0, 0.0, 0.0); // ຽຎັຌລ຾ຈຄ ີ glutPostRedisplay(); break; case g: // ຃ີ g glColor3f(0.0, 1.0, 0.0); // ຽຎັຌລຂຼ຤ ີ glutPostRedisplay(); break;
  7. 7. case b: // ຃ີ b glColor3f(0.0, 0.0, 1.0); // ຽຎັຌລຟາ ີ ໄ glutPostRedisplay(); break;case p: // ຃ີ p glColor3f(0.98, 0.04, 0.70); // ຽຎັຌລຍ຤ ີ ຺ glutPostRedisplay(); break;case o: // ຃ີ o glColor3f(0.98, 0.625, 0.12); // ຽຎັຌລລຠ ີ ຺ໄ glutPostRedisplay(); break;
  8. 8. case m: // ຃ີ m glColor3f(1.0, 0.0, 1.0); // ຽຎັຌລຠ຤ຄ ີ ໃ glutPostRedisplay(); break;case c: // ຃ີ c glColor3f(0.0, 1.0, 1.0); // ຽຎັຌລີຟາ຾ກ ໃ ໄ glutPostRedisplay(); break;case e: // ຃ີ e exit(0); // ວວກ break; default: break; }}
  9. 9. 4. ພາກລ຤ຌ຦ົກ void main() ໃ ັvoid main (int argc, char **argv) //ກາຌຈ຃າຽຣໃ ຠຉຌເຌGLUT ໍ ຺ ໃ ີ ຺ໄ{ glutInit (&argc, argv); glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE); //ກາຌຈ ໍ ຺ ຾ຍຍເຌກາຌລະ຾ຈຄຏຌຽ຋ິຄໜາ຅ໍ ຺ ໄ glutInitWindowSize(500, 500); //ກາຌຈຂະໜາຈຂວຄໜາ຅ລະ຾ຈຄຏຌ ໍ ຺ ໄ ໍ ຺ glutInitWindowPosition(50, 50); //ຉາ຾ໜຄຂວຄໜາ຅ລະ຾ຈຄຏຌ ໍ ໃ ໄ ໍ ຺ glutCreateWindow ("Keyboard function : r=red, g=green, b=blue, ໍ ຺ ໄ p=ping, o=orange, c=cyan, e=exit"); //ກາຌຈຂໍ຃຤າຠ຋ໃ ິລະ຾ຈຄຽ຋ິຄ title bar glutDisplayFunc(display); //ລະ຾ຈຄກຢາຍຟິ ກວວກ຋າຄ຅ພາຍ ໍ glutKeyboardFunc (keyboard); glutMainLoop (); //ລະ຾ຈຄກຢາຍຟິ ກວວກ຋າຄ຅ພາຍ຤ຌຨວຍ຅ຌກ຤າ຅ະ ໍ ຺ ຺ ໃ ຎິຈໜາ຅ໍ ໄ}

×