Report gl project group zyl
- 1. ລາາຣະຌະຣ ັຈ ຎະຆາິ ຎະແຉ ລ ັຌຉິພາຍ
ຽວກກະຣາຈ ຎະຆາິ ຎະແຉ ຽວກກະພາຍ ຎະຆາຆ ຺ຌຣາ
ຍຈຣາງຄາຌ
຺
ຆາວຠພິຽຉກຢາຟິກ
ິ ີ
຺ ໍ້
ຂ:
rotate WireCone
- 2. ວລວຌ:
ຏູີ່ ີ 1: ຌິຣ ັຌກຸຌ….......................
ໍ້
ຏູີ່ ີ 2: ….......................
ໍ້
ຆືີ່ ກຸຠ: …..ZYL.....................
ີ່
າ
ໍ້ ແຆຎະ ັກ ແຆງະພູຠ….......................
າ
ໍ້ ແຆ ຺ຄ….......................
າ
ໍ້ ັຌະຣ ຺ຍ ຈຄຎັຌງາ….......................
ລ ຺ກຨຼຌ 2012-2013
ພາກລະຽໜີ
Head File ຠຌເຆຉ ີ່
ີ່ ໍ້ math.h, glut.h ຣະ stdio.h
ພາກຎະຉິຍ ັຈ
1 ລະຽໜີກາຌຽຨັຈຼກຂວຄຎຢກຠ (ພາຍຎະກວຍຌາ)
ໍ້ ີ່
ຎຢກຨຠຌີຠຌກາຌລະຈຄກາຌໝຸຌຣະລາຠາຈຎີ່ຼຌລີແຈ ໍ້
- 4. 2 ລະຽໜີກາຌລາິ ຈຎຢກຠ(ພາຍຎະກວຍຌາ)
ໍ້ ໍ້ ໍ້ ູ ໍ້
ຊາກ ຺ຈ ິກຆາງ ະຽຨັຈເຨຍໝຸຌແຂຶຌ
ຊາກ ຺ຈ ິກຂາ ະຽຨັຈເຨຍໝຸຌຆາຣ ຺ຄ
ໍ້ ໍ້ ູ ໍ້
ຊາກ ຺ຈ A ຽຎັຌລີຈຄ
ໍ້
ຊາກ ຺ຈ D ຽຎັຌລີຟາ
ໍ້ ໍ້
- 5. ຊາກ ຺ຈ s ຽຎັຌລີຂຼ
ໍ້
ພາກລະົຸ ຍ
1 ລະົຸຍຈງງໍ້
ລາຠາຈໝູຌແຈຉາຠຈງາຠແຉາຠີ ຉວຄກາຌຣະຎີ່ຼຌລີແຈຊກຉວຄ
ໍ້ ໍ້ ໍ້ ໍ້ ຶ ໍ້
2 ຌາຄເຌກາຌພັຈະຌາ
ມາກລາຄຨູຍລາຠຠິຉິແຈຈງກາຌເຆ ໍ້ Open GL
ໍ້ ໍ້ ໍ້
Code GL Rotate Wirecon
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#define ROT_INC 0.005
void drawSpin(void);
static GLfloat g_rotate = 0;
static GLfloat g_rotInc = ROT_INC;
static void (*drawPrimP)(void) = drawSpin;
- 6. void drawSpin(void) {
glutWireCone(6.0, 8.0, 10, 20);
}
void display(void)
{
glClear( GL_COLOR_BUFFER_BIT );
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glRotatef(g_rotate,1.0,1.0,1.0);
(*drawPrimP)();
glPopMatrix();
glutSwapBuffers();
}
void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective( 60.0, (GLdouble)w/(GLdouble)h, 0.1, 40.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 20.0,0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}
int a=0.0,s=0.0,y=0.0;
void myKey(unsigned char k, int x, int y)
{
switch (k) {
case 'q':
case 'Q': exit(0);
case 'd':
y += 1.0;
glColor3f(0.0,0.0,y);
break;
case 's':
s += 1.0;
glColor3f(0.0,s,0.0);
- 7. break;
case 'a':
a += 1.0;
glColor3f(a,0.0,0.0);
break;
default:
printf("Unknown keyboard command '%c'.n", k);
break;
}
}
void myMouse(int btn, int state, int x, int y)
{
if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) g_rotInc += ROT_INC;
if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) g_rotInc = ROT_INC;
if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) g_rotInc -= ROT_INC;
glutPostRedisplay();
}
void myIdleFunc(void) {
g_rotate += g_rotInc;
glutPostRedisplay();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize(500, 500);
glutCreateWindow("3D Test");
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glutIdleFunc(myIdleFunc);
glutKeyboardFunc(myKey);
glutMouseFunc(myMouse);
glClearColor(1.0, 1.0, 1.0, 1.0);
glColor3f(a, s, y);
glutMainLoop();