Week 03
下載freeglut 把libfreeglut.a複製
重新命名libglut32.a
標示座標
座標(x,y,z)
#include <GL/glut.h>
#include <stdio.h>
void mouse (int button,int state, int x,int y)
{
/// printf("%d %d %d %d\n",button, state, x, y);
if(state==GLUT_DOWN)
printf("glVertex2f((%d-150)/150.0, -(%d-150)/150.0);\n", x, y);
}
void display()
{
glutSolidTeapot ( 0.3 );
glutSwapBuffers();
}
int main(int argc, char *argv[])///138¦æ
{
glutInit(&argc, argv);///140¦æ
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143¦æ
glutCreateWindow("GLUT Shapes");///145¦æ
glutDisplayFunc(display);///148¦æ
glutMouseFunc(mouse);
glutMainLoop();///174¦æ
}
模型
https://jsyeh.org/3dcg10/到這下載data window
在解壓縮 將data移到window
再打開translatef
用原本的程式碼
再修改幾行
#include <GL/glut.h>
#include <stdio.h>
float teapotX = 0, teapotY = 0;
void mouse (int button,int state, int x,int y)
{
teapotX = (x-150)/150.0;
teapotY = -(y-150)/150.0;
}
void display()
{ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX, teapotY, 0);
glutSolidTeapot ( 0.3 );
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char *argv[])///138¦æ
{
glutInit(&argc, argv);///140¦æ
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143¦æ
glutCreateWindow("GLUT Shapes");///145¦æ
glutDisplayFunc(display);///148¦æ
glutMouseFunc(mouse);
glutMainLoop();///174¦æ
}
#include <GL/glut.h>
#include <stdio.h>
float teapotX = 0, teapotY = 0;
float angle = 0;
void mouse (int button,int state, int x,int y)
{
teapotX = (x-150)/150.0;
teapotY = -(y-150)/150.0;
}
void display()
{ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glutSolidTeapot ( 0.3 );
glPopMatrix();
glutSwapBuffers();
}
void motion (int x,int y)
{
angle = x;
display();
}
int main(int argc, char *argv[])///138¦æ
{
glutInit(&argc, argv);///140¦æ
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///143¦æ
glutCreateWindow("GLUT Shapes");///145¦æ
glutDisplayFunc(display);///148¦æ
glutMotionFunc(motion);
glutMainLoop();///174¦æ
}
沒有留言:
張貼留言