#include <opencv/cv.h>
#include <GL/glut.h>
GLUquadric * quad = NULL;//宣告一個二次曲面
float angle=0;
void display()
{
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 0,1,0);
glRotatef(90, 1,0,0);
gluQuadricTexture(quad, true);//二次曲面 有貼圖
gluSphere(quad, 1 , 30, 30);//=ˋ次曲面畫出一個圓球 半徑為 1 切為 30 30
glPopMatrix();
glutSwapBuffers();
}
void idle()
{
angle+=1;
glutPostRedisplay();//讓 glut 有空時重畫畫面
}
int main()
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("01160616");
glutDisplayFunc(display);
glutIdleFunc(idle);//閒置時 可叫idle
glEnable(GL_TEXTURE_2D);
IplImage * img = cvLoadImage("earth.jpg");
cvCvtColor(img,img,CV_BGR2RGB);//轉換色彩為 RGB 方便貼圖
GLuint id;
glGenTextures(1,&id);
glBindTexture(GL_TEXTURE_2D,id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
quad = gluNewQuadric();
glutMainLoop();
}
沒有留言:
張貼留言