四個紅色茶壺
#include <GL/glut.h>
void myteapot(float x, float y)
{
glPushMatrix();
glTranslatef(x,y,0);
glutSolidTeapot(0.3);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(1,0,0);
myTeapot( +0.5, +0.5 );
myTeapot( +0.5, -0.5 );
myTeapot( -0.5, -0.5 );
myTeapot( -0.5, +0.5 );
glutSwapBuffers();///交換2倍的buffer
}
int main(int argc, char**argv)
{///進階的main函式
glutInit( &argc, argv );///初始化
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );///2倍+3D
glutCreateWindow("week03的視窗");///視窗
glutDisplayFunc( display );///用來畫畫的函式
glutMainLoop();
滑鼠移動
#include <GL/glut.h>
#include <stdio.h>
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glutSwapBuffers();///交換2倍的buffer
}
void mouse(int button,int state, int x,int y)
{
printf("%d %d %d %d\n",button,state,x,y);
}
int main(int argc, char**argv)
{///進階的main函式
glutInit( &argc, argv );///初始化
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );///2倍+3D
glutCreateWindow("week04 mouse");///視窗
glutDisplayFunc( display );///用來畫畫的函式
glutMouseFunc( mouse );
glutMainLoop();
}
用滑鼠移動茶壺四個象限
#include <GL/glut.h>
#include <stdio.h>
int mouseX=0, mouseY=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(1,1,0);
glPushMatrix();
glTranslatef((mouseX-150)/150.0,-(mouseY-150)/150.0, 0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button,int state, int x,int y)
{
mouseX=x; mouseY=y;
}
int main(int argc, char**argv)
{///進階的main函式
glutInit( &argc, argv );///初始化
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );///2倍+3D
glutCreateWindow("week04 mouse");///視窗
glutDisplayFunc( display );///用來畫畫的函式
glutMouseFunc( mouse );
glutMainLoop();
}
用滑鼠畫出圖
include <GL/glut.h>
#include <stdio.h>
int mouseX=0, mouseY=0,N=0;
int mx[100],my[100];
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(1,1,0);
glBegin(GL_LINE_LOOP);
for(int i=0; i<N; i++){
glVertex2f((mx[i]-150)/150.0,-(my[i]-150)/150.0);
}
glEnd();
glutSwapBuffers();
}
void mouse(int button,int state, int x,int y)
{
mouseX=x; mouseY=y;
if(state==GLUT_DOWN){
printf(" glVertex2f((mx[i]-150)/150.0,-(my[i]-150)/150.0); \n",x,y);
N++;
mx[N-1]=x; my[N-1]=y;
}
}
int main(int argc, char**argv)
{///進階的main函式
glutInit( &argc, argv );///初始化
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );///2倍+3D
glutCreateWindow("week04 mouse");///視窗
glutDisplayFunc( display );///用來畫畫的函式
glutMouseFunc( mouse );
glutMainLoop();
}
沒有留言:
張貼留言