下載 [glut32.dll] [data] [ win32]
解壓縮windows
將glut32.dll移動至windows資料夾
再將data裡的資料夾移動至windows資料夾內即可開啟
==============================================================
上週交的茶壺
上週交的茶壺
#include <GL/glut.h> ///為了glutXXX( ) 還有glXXXX( )
#include <stdio.h> ///為了printf( )
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void mouse(int button, int state, int x,int y)
{ ///mouse函式 : 左0中1右2 , 下0 上1 , x座標 y座標
printf("%d %d %d %d\n",button,state,x,y);
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week03");
glutDisplayFunc(display); ///display函式
glutMouseFunc(mouse); ///mouse函式
glutMainLoop();
}
==============================================================
讓茶壺隨著游標點擊移動
#include <GL/glut.h> ///為了 glutXXXX( ) 還有glXXXX( )
#include <stdio.h> ///TODO:為了printf( )
float teapotX=0, teapotY=0; ///TODO2: 這裡是 -1.0 ~ +1.0的座標
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///TODO2: 清背景
glPushMatrix(); ///TODO2: 備份矩陣
glTranslatef(teapotX,teapotY,0); ///TODO2: 移動
glutSolidTeapot(0.3);
glPopMatrix(); ///TODO2: 備份矩陣
glutSwapBuffers();
}
void mouse(int button, int state, int x,int y)
{
printf("%f %f\n",(x-150)/150.0,(y-150)/150.0);
teapotX=(x-150)/150.0; ///TODO2: 任務: X:0...300變成 -1...+1
teapotY=-(y-150)/150.0; ///TODO2: 任務: Y:300...0 變成 -1...+1
}///例如 0~150~300
減150 -150~0~150
除150 -1~0~1
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
==============================================================
用滑鼠畫出圖形
#include <GL/glut.h>
#include <stdio.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
///座標貼在這
glEnd();
glutSwapBuffers();
}
void mouse(int button, int state, int x,int y)
{
if(state==GLUT_DOWN){
printf(" glVertex2f( (%d-150)/150.0, -(%d-150)/150.0);\n",x,y);
}
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
在視窗中隨意點選,將跑出來的座標複製起來
在所選的區域貼上,即顯示出圖形
==============================================================
將圖形上色
#include <GL/glut.h>
#include <stdio.h>
void display()
{
glClearColor(180/255.0,103/255.0,87/255.0,1); ///180,103,87
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON); ///TODO4: 開始畫
glColor3f(211/255.0, 203/255.0, 87/255.0); ///顏色
glVertex2f( (84-150)/150.0, -(47-150)/150.0);
glVertex2f( (46-150)/150.0, -(94-150)/150.0);
glVertex2f( (52-150)/150.0, -(160-150)/150.0);
glVertex2f( (102-150)/150.0, -(198-150)/150.0);
glVertex2f( (200-150)/150.0, -(212-150)/150.0);
glVertex2f( (259-150)/150.0, -(153-150)/150.0);
glVertex2f( (255-150)/150.0, -(88-150)/150.0);
glVertex2f( (224-150)/150.0, -(52-150)/150.0);
glVertex2f( (147-150)/150.0, -(21-150)/150.0);
glVertex2f( (104-150)/150.0, -(22-150)/150.0);
/// 0...150...300
///減150 -150...0...150
///除150.0 -1...0...+1
glEnd();
glutSwapBuffers();
}
void mouse(int button, int state, int x,int y)
{
if(state==GLUT_DOWN){
printf(" glVertex2f( (%d-150)/150.0, -(%d-150)/150.0);\n",x,y);
}
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
==============================================================
畫圓形
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void display()
{
glClearColor(180/255.0,103/255.0,87/255.0,1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
for(float angle=0;angle<=2*3.1415;angle+=0.01){
glVertex2f(0.3*cos(angle),0.7*sin(angle));
}
glEnd();
glBegin(GL_POLYGON);
glColor3f(211/255.0, 203/255.0, 87/255.0);
glVertex2f( (84-150)/150.0, -(47-150)/150.0);
glVertex2f( (46-150)/150.0, -(94-150)/150.0);
glVertex2f( (52-150)/150.0, -(160-150)/150.0);
glVertex2f( (102-150)/150.0, -(198-150)/150.0);
glVertex2f( (200-150)/150.0, -(212-150)/150.0);
glVertex2f( (259-150)/150.0, -(153-150)/150.0);
glVertex2f( (255-150)/150.0, -(88-150)/150.0);
glVertex2f( (224-150)/150.0, -(52-150)/150.0);
glVertex2f( (147-150)/150.0, -(21-150)/150.0);
glVertex2f( (104-150)/150.0, -(22-150)/150.0);
glEnd();
glutSwapBuffers();
}
void mouse(int button, int state, int x,int y)
{
if(state==GLUT_DOWN){
printf(" glVertex2f( (%d-150)/150.0, -(%d-150)/150.0);\n",x,y);
}
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}





沒有留言:
張貼留言