2017年11月2日 星期四

圖學筆記Week08

主題:Texture


需要檔案:

OpenCV2.1

--------------------------------------------

需要程式碼

#include <opencv/highgui.h>
int main()
{
IplImage * img=cvLoadImage("a.jpg");
cvNamedWindow("hello");
cvShowImage("hello", img);
cvWaitKey(0);
}
---------------------------------------------
注意事項:
需要在專案檔設置build option
->
=>Link setting 加入三個lib檔
->
=>search dirtories中的linker跟compiler設置位置
->
=>沒注意到這些將可能error
-------------------------------------------------------------
開openGL專案,將上述所教的放入此專案檔,
=>他們可以共存~


做出旋轉地球:

需要涵式:
=>
#include <opencv/cv.h>

int myTexture(char *filename)
{
    IplImage * img = cvLoadImage(filename); ///OpenCV讀圖
    cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)
    glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能
    GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID
    glGenTextures(1, &id); /// 產生Generate 貼圖ID
    glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖
    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);
    return id;
}

=>gluQuadricTexture(quad, 1);  in function display()
=>myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
     in main function


->























沒有留言:

張貼留言