|
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
กระทู้ #3613 [C] (จาก IP: 110.168.60.79)
ทำรูปสี่เหลี่ยมวิ่งรอบจอด้วย CODE BLOCK
ทำรูปสี่เหลี่ยมวิ่งรอบจอด้วย CODE BLOCK ในหน้า render_scene
|
จากคุณ
:
อั้ม / aum.kns@gmail.com [2017-08-26 14:06:17]
|
|
ความคิดเห็น #29443 (จาก IP: 49.228.73.147)
ผมมีคลิปสอนให้แล้ว ดูให้เข้าใจหลักการ แล้วเอาไปเขียน ฝึกทักษะ เอาเองครับ |
จากคุณ
:
maddog [2017-08-27 10:50:02]
|
|
ความคิดเห็น #29444 (จาก IP: 110.168.60.252)
#define GLUT_DISABLE_ATEXIT_HACK #define GLEW_STATIC
#include <iostream> #include <vector> #include <string> #include <math.h> #include <time.h> #include <stdlib.h> #include <GL/glew.h> #include <GL/freeglut.h>
#define CANVAS_WIDTH 1000 #define CANVAS_HEIGHT 1000 #define WINDOW_WIDTH 700 #define WINDOW_HEIGHT 700
#define CANVAS_LEFT -75 #define CANVAS_RIGHT 75 #define CANVAS_BOTTOM -75 #define CANVAS_TOP 75
#define MY_POINT_SIZE 1
using namespace std;
float aum = 0.0f;
// Function declarations. void init_opengl(); void init_glew(); void update_scene(); void reshape_scene(GLint width, GLint height); void draw_grid(); void render_scene(); void on_keydown(unsigned char key, int x, int y);
/** * */ void init_opengl() { glClearColor(0.0, 0.0, 0.0,1.0); glEnable(GL_CULL_FACE); glCullFace(GL_BACK);
glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS);
glLineWidth(5.0f); glPointSize(MY_POINT_SIZE); }
/** * */ void init_glew() { // GLEW GLenum err = glewInit(); cout << "GLEW initilization: " << err << endl;
// If there is no error, list the supported extensions. if(!err) { cout << "Supported extensions:" << endl; if (GLEW_VERSION_1_3) {cout << " GLEW_VERSION_1_3" << endl;} if (GL_VERSION_1_4) {cout << " GL_VERSION_1_4" << endl;} if (GL_ARB_point_sprite) {cout << " GL_ARB_point_sprite" << endl;} } }
/** * Update scene. */ void update_scene() { // Re-render the canvas. aum += 0.05f;
glutPostRedisplay(); }
/** * */ void reshape_scene(GLint width, GLint height) { float aspect_ratio = width/((float)height); glViewport(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(CANVAS_LEFT, CANVAS_RIGHT, CANVAS_BOTTOM, CANVAS_TOP); }
/** * */ void draw_box(float w, float h) { glBegin(GL_TRIANGLE_STRIP); glVertex3f(-w/2.0, -h/2.0, 0.0); glVertex3f(w/2.0, -h/2.0, 0.0); glVertex3f(-w/2.0, h/2.0, 0.0); glVertex3f(w/2.0, h/2.0, 0.0); glEnd();
}
/** * Render the canvas. */ void render_scene() { // Clear screen glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Reset projection matrix. glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(CANVAS_LEFT, CANVAS_RIGHT, CANVAS_BOTTOM, CANVAS_TOP);
// Reset model-view matrix. glMatrixMode(GL_MODELVIEW); glLoadIdentity();
// Render scene element(s). // PUT YOUR CODE HERE! glBegin(GL_LINE_LOOP); glColor3f(1.0, 1., 1.0); glVertex3f(-65.0, 65.0, 0.0); glVertex3f(-65.0, -65.0, 0.0); glVertex3f(65.0, -65.0, 0.0); glVertex3f(65.0, 65.0, 0.0); glEnd(); //A glBegin(GL_LINE_LOOP); glColor3f(1.0, 1., 1.0); glVertex3f(-30.0, 50.0, 0.0); glVertex3f(-50.0, 50.0, 0.0); glVertex3f(-50.0, 30.0, 0.0); glVertex3f(-45.0, 30.0, 0.0); glVertex3f(-45.0, 35.0, 0.0); glVertex3f(-35.0, 35.0, 0.0); glVertex3f(-35.0, 30.0, 0.0); glVertex3f(-30.0, 30.0, 0.0); glEnd();
glBegin(GL_LINE_LOOP); glVertex3f(-45.0, 45.0, 0.0); glVertex3f(-45.0, 40.0, 0.0); glVertex3f(-35.0, 40.0, 0.0); glVertex3f(-35.0, 45.0, 0.0); glEnd();
glBegin(GL_TRIANGLES); glColor3f(0.5, 0.5, 1.0); glVertex3f(-45.0, 50.0, 0.0); glVertex3f(-50.0, 30.0, 0.0); glVertex3f(-45.0, 30.0, 0.0); glEnd();
glBegin(GL_TRIANGLE_STRIP); glVertex3f(-45.0, 50.0, 0.0); glVertex3f(-45.0, 45.0, 0.0); glVertex3f(-30.0, 50.0, 0.0); glVertex3f(-30.0, 45.0, 0.0); glVertex3f(-30.0, 30.0, 0.0); glVertex3f(-35.0, 45.0, 0.0); glVertex3f(-35.0, 30.0, 0.0); glEnd();
glBegin(GL_TRIANGLE_FAN); glVertex3f(-45.0, 40.0, 0.0); glVertex3f(-45.0, 35.0, 0.0); glVertex3f(-35.0, 35.0, 0.0); glVertex3f(-35.0, 40.0, 0.0); glEnd();
glPushMatrix(); glTranslatef(-40.0,40.0,0.0); glRotatef (-aum*1 , 0.0, 0.0, 1.0); glTranslatef(30.0,0.0,0.0); glColor3f(0.5, 1., 0.5); draw_box(5.0, 5.0); glPopMatrix(); //A //U glBegin(GL_LINE_LOOP); glColor3f(1.0, 1., 1.0); glVertex3f(-5.0, 10.0, 0.0); glVertex3f(-10.0, 10.0, 0.0); glVertex3f(-10.0, -10.0, 0.0); glVertex3f(10.0, -10.0, 0.0); glVertex3f(10.0, 10.0, 0.0); glVertex3f(5.0, 10.0, 0.0); glVertex3f(5.0, -5.0, 0.0); glVertex3f(-5.0, -5.0, 0.0); glEnd();
glBegin(GL_TRIANGLE_STRIP); glColor3f(0.5, 1., 0.5); glVertex3f(-5.0, 10.0, 0.0); glVertex3f(-10.0, -10.0, 0.0); glVertex3f(-5.0, -10.0, 0.0); glVertex3f(-5.0, -5.0, 0.0); glVertex3f(5.0, -5.0, 0.0); glVertex3f(-5.0, -10.0, 0.0); glVertex3f(5.0, -10.0, 0.0); glVertex3f(10.0, -10.0, 0.0); glVertex3f(5.0, 10.0, 0.0); glVertex3f(10.0, 10.0, 0.0); glEnd();
glPushMatrix(); glRotatef (-aum*2 , 0.0, 0.0, 1.0); glTranslatef(30.0,0.0,0.0); glColor3f(1.0, 0.5, 0.5); draw_box(5.0, 5.0); glPopMatrix(); //U //M glBegin(GL_LINE_LOOP); glColor3f(1.0, 1., 1.0); glVertex3f(30.0, -30.0, 0.0); glVertex3f(30.0, -50.0, 0.0); glVertex3f(35.0, -50.0, 0.0); glVertex3f(35.0, -35.0, 0.0); glVertex3f(40.0, -45.0, 0.0); glVertex3f(45.0, -35.0, 0.0); glVertex3f(45.0, -50.0, 0.0); glVertex3f(50.0, -50.0, 0.0); glVertex3f(50.0, -30.0, 0.0); glVertex3f(45.0, -30.0, 0.0); glVertex3f(40.0, -40.0, 0.0); glVertex3f(35.0, -30.0, 0.0); glEnd();
glBegin(GL_TRIANGLE_STRIP); glColor3f(1.0, 0.5, 0.5); glVertex3f(30.0, -50.0, 0.0); glVertex3f(35.0, -50.0, 0.0); glVertex3f(35.0, -30.0, 0.0); glVertex3f(35.0, -35.0, 0.0); glVertex3f(40.0, -40.0, 0.0); glVertex3f(35.0, -35.0, 0.0); glVertex3f(40.0, -45.0, 0.0); glVertex3f(45.0, -35.0, 0.0); glVertex3f(40.0, -40.0, 0.0); glVertex3f(45.0, -30.0, 0.0); glVertex3f(50.0, -30.0, 0.0); glVertex3f(45.0, -50.0, 0.0); glVertex3f(50.0, -50.0, 0.0);
glEnd();
glPushMatrix(); glTranslatef(40.0,-40.0,0.0); glRotatef (-aum*4 , 0.0, 0.0, 1.0); glTranslatef(30.0,0.0,0.0); glColor3f(0.5, 0.5, 1.0); draw_box(5.0, 5.0); glPopMatrix(); //M
glPushMatrix(); gl glTranslatef(-70.0,70.0,0.0); glColor3f(0.5, 0.5, 0.5); draw_box(10.0, 10.0); glPopMatrix();
// Done. glutSwapBuffers(); }
/** * */ void on_keydown(unsigned char key, int x, int y) { }
/** * Main entry. * */ int main(int argc, char **argv) {
srand(time(NULL));
glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT); glutInitWindowPosition(40, 40); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); glutCreateWindow("CHONNIKAN KUNCHON");
// Setup callback functions. glutDisplayFunc(render_scene); glutIdleFunc(update_scene); glutReshapeFunc(reshape_scene); glutKeyboardFunc(on_keydown);
// Initializations. init_opengl(); // OpenGL init_glew(); // GLEW
// Start the main loop. glutMainLoop();
return 0; }
ผมลอง gotoxy แล้วแต่ก็ยังเออเร่อครับ |
จากคุณ
:
อั้ม / aum.kns@gmail.com [2017-08-27 12:53:17]
|
|
ความคิดเห็น #29445 (จาก IP: 202.44.225.15)
ลองสร้างตัวแปลอีกตัวไว้ใน update_scene แล้วเรียกตรง gltranslate(ตัวแปล,0.0,0.0); นะครับ |
จากคุณ
:
zaqbiwty / zaqsuvicha@gmail.com [2017-08-27 20:09:01]
|
|
ความคิดเห็น #29446 (จาก IP: 61.91.35.66)
ผมลอง gotoxy แล้วแต่ก็ยังเออเร่อครับ >> error ว่า ? |
จากคุณ
:
maddog [2017-08-28 11:45:52]
|
|
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
|
|