2019年6月6日 星期四

它的手可以穿過我的巴巴

電腦圖學
(一). 作業Q and A

(二). 複習 : 貼圖

(三). 複習 : 打光

(四). 複習 : 模型

#include <GL/glut.h>
#include <opencv/highgui.h> ///OpenCV High GUI讀圖
#include <opencv/cv.h>
///程式碼是對的, 但是沒有設定好include, lib, bin
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot( 0.3 );
    glutSwapBuffers();
}
GLuint id;
void myInit()
{
    glEnable(GL_TEXTURE_2D);
    IplImage * img = cvLoadImage("marvel.jpg");
    cvCvtColor(img, img, CV_BGR2RGB);///防止顏色跑掉
    glGenTextures(1, &id );
    glBindTexture(GL_TEXTURE_2D, id);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
}
int main(int argc, char **argv)
{
    ///IplImage * img = cvLoadImage("marvel.jpg");
    ///cvShowImage("opencv", img);
    ///cvWaitKey(0);///等你按按鍵
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("GLUT");///之後
    ///建好GLUT視窗,可以開始準備 3D 貼圖 (要在create...MainLoop才能建貼圖)
    myInit();///我們的貼圖在這裡

    glutDisplayFunc(display);

    glutMainLoop();///之前
}

沒有留言:

張貼留言