今天做的第一個是會轉的方塊
程式碼:
#include <GL/glut.h>
float angle=0;///TODO
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
glPushMatrix();///TODO: 備份矩陣
glRotatef(angle,0,0,1);
glutSolidCube(1);///TODO:畫個方塊
glPopMatrix();///TODO: 還原矩陣
glutSwapBuffers();///交換兩倍的buffers
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160830");///(3)開視窗
glutDisplayFunc(display);
glutIdleFunc(display);///等一下要顯示的函示
glutMainLoop();///TODO :我們註冊mouse函式
}
改變了長度和顏色
程式碼:
#include <GL/glut.h>
float angle=0;///TODO
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
glPushMatrix();///TODO: 備份矩陣
glRotatef(angle,0,0,1);///對中心轉動
glScalef(0.5,0.1,0.1);///細長的
glColor3f(0,0,1);
glutSolidCube(1);///TODO:畫個方塊
glPopMatrix();///TODO: 還原矩陣
glutSwapBuffers();///交換兩倍的buffers
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160830");///(3)開視窗
glutDisplayFunc(display);
glutIdleFunc(display);///等一下要顯示的函示
glutMainLoop();///TODO :我們註冊mouse函式
}
下一步加了一行程是讓物體移動
下一步加了一行程是讓物體移動
程式碼:
#include <GL/glut.h>
float angle=0;///TODO
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
glPushMatrix();///TODO: 備份矩陣
glRotatef(angle,0,0,1);///對中心轉動
glTranslatef(0.25,0,0);///移動關節
glScalef(0.5,0.1,0.1);///細長的
glColor3f(0,0,1);
glutSolidCube(1);///TODO:畫個方塊
glPopMatrix();///TODO: 還原矩陣
glutSwapBuffers();///交換兩倍的buffers
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160830");///(3)開視窗
glutDisplayFunc(display);
glutIdleFunc(display);///等一下要顯示的函示
glutMainLoop();///TODO :我們註冊mouse函式
}
讓藍色物體中心點一道右上角然後再做個大白
程式碼:
#include <GL/glut.h>
float angle=0;///TODO
void hand()
{
glPushMatrix();///細長的
glScalef(0.5,0.1,0.1);///
glColor3f(0,0,1);
glutSolidCube(1);///方塊
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
glColor3f(1,1,1); glutSolidCube(1);
glPushMatrix();///TODO: 備份矩陣
glTranslatef(0.5,0.5,0);///移動到右上角
glRotatef(angle,0,0,1);///對中心轉動
glTranslatef(0.25,0,0);///移動關節
hand();
glPopMatrix();///TODO: 還原矩陣
glutSwapBuffers();///交換兩倍的buffers
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160830");///(3)開視窗
glutDisplayFunc(display);
glutIdleFunc(display);///等一下要顯示的函示
glutMainLoop();///TODO :我們註冊mouse函式
}
加一根手
程式碼:#include <GL/glut.h>float angle=0;///TODOvoid hand(){
glPushMatrix();///細長的 glScalef(0.5,0.1,0.1);/// glutSolidCube(1);///方塊 glColor3f(0,0,1); glPopMatrix();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空}void display() glColor3f(1,1,1); glutSolidCube(0.5);{
glTranslatef(0.25,0.25,0);///移動到右上角 glPushMatrix();///TODO: 備份矩陣
glRotatef(angle,0,0,1);///對中心轉動
glTranslatef(0.25,0,0); glTranslatef(0.25,0,0);///移動關節 hand(); glPopMatrix(); glPushMatrix(); glRotatef(angle,0,0,1); hand(); glTranslatef(0.25,0,0);
int main(int argc, char *argv[]) glPopMatrix();///TODO: 還原矩陣 glutSwapBuffers();///交換兩倍的buffers angle++;}
{
glutCreateWindow("08160830");///(3)開視窗 glutInit(&argc, argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutDisplayFunc(display); glutIdleFunc(display);///等一下要顯示的函示 glutMainLoop();///TODO :我們註冊mouse函式
}
?ˊ






沒有留言:
張貼留言