เขียนโค๊ต 3D OpenGl

สอบถามพี่ๆโปรแกรมเมอร์นะครับคือ อ.สั่งงานผมมาให้ทำรูป 3 มิติ โดยอิงโค๊ตในหนังสือที่เรียน   แต่ผมลองทำแล้วแก้ไขแล้วทำไม่ได้อ่ะครับ ผมเลยขอพึ่งพี่ๆ โปรแกรมเมอร์หน่อยอ่ะครับ

ตัวอย่างโค๊ต ในหนังสือ
#include <GL/glut.h>
#include <stdio.h>
#include <stdlib.h>
#define ESCAPE 27

GLfloat xt = 0.0, yt=0.0, zt=0.0;
GLfloat xs=1.0, ys=1.0,zs=1.0;
GLfloat xangle=20.0,yangle=20.0,zangle=20.0;
GLint window;

void init(void)
{
    glEnable(GL_DEPTH_TEST);
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glOrtho(-6,6,-6,6,-6,6);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    //Anti-Alias
    glEnable (GL_LINE_SMOOTH);
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    
    glColor3f(1.0,0.0,0.0);
    glBegin (GL_LINE);
    glVertex3f(-5.5,0.0,0.0);
    glVertex3f(5.5,0.0,0.0);
    glEnd();
    
    glBegin (GL_LINE);
    glVertex3f(0.0,-5.5,0.0);
    glVertex3f(0.0,5.5,0.0);
    glEnd();
    
    glPushMatrix();
    glTranslatef(xt, yt, 0.0);
    glScalef(xs, ys, 1.0);
    glRotatef(xangle, 1.0, 0.0, 0.0);
    glRotatef(yangle, 0.0, 1.0, 0.0);
    glRotatef(zangle, 0.0, 0.0, 1.0);
    

    glColor3f(0.0,0.0,1.0);
    glutWireCube (2);
    //glutWireTeapot (2);
    
    glPopMatrix();
    glutSwapBuffers();
    glFlush();
}

void KeyboardAssign (GLubyte key, GLint x, GLint y)
{
    switch (key)
    {
    case ESCAPE :
            printf("escape pressed. exit. \n");
            glutDestroyWindow(window);
            exit(0);
            break;
            
            
    case 't':
        xt += 0.2;
        glutPostRedisplay();
        break;
        
    case 'T':
        xt += 0.2;
        glutPostRedisplay();
        break;
        
    case 'S':
        xt += 0.2;
        glutPostRedisplay();
        break;
        
    case 'X':
        xt += 10.0;
        glutPostRedisplay();
        break;
        
    case 'y':
        xt += 10.0;
        glutPostRedisplay();
        break;
        
    case 'z':
        xt += 10.0;
        glutPostRedisplay();
        break;
        
default:
    break;
    }
}

int main(int argc,char** argv)
{
    glutInit (&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(50,150);
    glutInitWindowSize(500,500);
    glutCreateWindow("t=tran x, T=tran y, s=scale x,S=scale y,X=rot x,y=rot y,z=rot z");
    init();
    glutDisplayFunc(myDisplay);
    glutIdleFunc(myDisplay);
    glutKeyboardFunc(KeyboardAssign);
    glutMainLoop();
    return 0;
}


และภาพที่ผมจะทำ



รบกวนพี่ๆที่ใจดีหน่อยนะครับ  สอนก็ได้หรือจะเขียนให้ฏ้ได้ครับขอบพระคุณมากๆเลยนะครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่