STEP01:
去到https://jsyeh.org/3dcg10/
下載 1.[data] 2.[win32] 3.[glut32.dll] 三個檔案 並且解壓縮
1.開啟codeblocks 17.12
2.file => new => project 開啟GLUT project
3.點選點點點選擇桌面 將檔名改成week03-1_translate
4.下載葉老師上課用軟體freeglut壓縮檔
將裡面的freeglut檔案複製到桌面
再將裡頭lib的libfreeglut.a複製並貼上
將複製的改檔名為libglut32.a
5.再回到上一步選擇位置 選擇桌面/freeglut資料夾
STEP02-1第一個程式
#include <GL/glut.h>
void display()
{
glPushMatrix();///備份的矩陣
glTranslated( 0.5, 0, 0);
glutSolidTeapot( 0.3 );
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMainLoop();
}
可讓茶壺往右移動
STEP02-2第二個更改的程式版本
#include <GL/glut.h>
void display()
{
glPushMatrix();///備份的矩陣
glTranslated( 0.5, 0, 0);
glutSolidTeapot( 0.3 );
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
#include <stdio.h>
void mouse(int button,int state,int x,int y)
{///請mouse函式幫忙
printf("%d %d %d %d\n",button,state,x,y);
///button(左右鍵等),state(按下去是0,1)
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);///請mouse函式幫忙
glutMainLoop();
}
STEP02-3正式可以移動茶壺並且不出現殘影!
#include <GL/glut.h>
float X=0,Y=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景,殘影
glPushMatrix();///備份的矩陣
glTranslated( X, Y, 0);
glutSolidTeapot( 0.3 );
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
///#include <stdio.h>
void mouse(int button,int state,int x,int y)
{///請mouse函式幫忙
X= (x-150)/150.0;///printf("%d %d %d %d\n",button,state,x,y);
Y= -(y-150)/150.0;///口訣減一半,除一半,y負號
///button(左右鍵等),state(按下去是0,1)
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);///請mouse函式幫忙
glutMainLoop();
}
補充:gist.github.com Gist功能
在裡頭的+新增一個不公開的小程式 Ex:week03-1.cpp檔
系統就會幫你用漂亮的排版 旁邊有個複製可把html網址複製下來
再到blogger左上角的筆切換成< >html檢視 再把網址貼上即可
STEP02-4第二個程式
利用原本茶壺的圖案在上面找點製作自己的圖
做出一個小兔子
#include <GL/glut.h>
#include <stdio.h>
void display()
{
///glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景,殘影
///glPushMatrix();///備份的矩陣
///glTranslated( X, Y, 0);
///glutSolidTeapot( 0.3 );
glBegin(GL_POLYGON);
glVertex2f(-0.208, 0.148);
glVertex2f(-0.244, 0.092);
glVertex2f(-0.272, 0.012);
glVertex2f(-0.304, -0.116);
glVertex2f(-0.228, -0.220);
glVertex2f(-0.100, -0.232);
glVertex2f(0.048, -0.232);
glVertex2f(0.196, -0.228);
glVertex2f(0.268, -0.168);
glVertex2f(0.296, -0.088);
glVertex2f(0.280, 0.016);
glVertex2f(0.244, 0.072);
glVertex2f(0.176, 0.152);
glVertex2f(0.052, 0.164);
glVertex2f(-0.112, 0.152);
glEnd();
glBegin(GL_POLYGON);
glVertex2f(-0.204, 0.152);
glVertex2f(-0.212, 0.196);
glVertex2f(-0.228, 0.248);
glVertex2f(-0.236, 0.340);
glVertex2f(-0.224, 0.416);
glVertex2f(-0.168, 0.428);
glVertex2f(-0.140, 0.376);
glVertex2f(-0.140, 0.300);
glVertex2f(-0.132, 0.232);
glVertex2f(-0.132, 0.184);
glVertex2f(-0.124, 0.160);
glEnd();
glBegin(GL_POLYGON);
glVertex2f(0.084, 0.164);
glVertex2f(0.084, 0.216);
glVertex2f(0.076, 0.260);
glVertex2f(0.076, 0.332);
glVertex2f(0.084, 0.404);
glVertex2f(0.104, 0.428);
glVertex2f(0.140, 0.432);
glVertex2f(0.176, 0.424);
glVertex2f(0.180, 0.368);
glVertex2f(0.184, 0.304);
glVertex2f(0.188, 0.244);
glVertex2f(0.176, 0.208);
glVertex2f(0.160, 0.164);
glVertex2f(0.160, 0.160);
glEnd();
///glPopMatrix();///還原矩陣
glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{///請mouse函式幫忙
float X= (x-250)/250.0;
float Y= -(y-250)/250.0;///口訣減一半,除一半,y負號
if(state==GLUT_DOWN){
printf(" glVertex2f(%.3f, %.3f);\n",X,Y);
}
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);///請mouse函式幫忙
glutMainLoop();
}







沒有留言:
張貼留言