Tôi đã thấy nhiều mẫu mã để tải họa tiết cho OpenGL, nhiều trong số chúng có chút phức tạp để hiểu hoặc yêu cầu chức năng mới với nhiều mã.Đang tải kết cấu cho OpenGL với OpenCV
Tôi đã suy nghĩ rằng như OpenCV cho phép chúng tôi để tải bất kỳ định dạng hình ảnh nó có thể là một một cách hiệu quả đơn giản để tải textures để OpenGL, nhưng tôi đang thiếu cái gì. Tôi có đoạn mã này trong C++:
cv::Mat texture_cv;
GLuint texture[1];
int Status=FALSE;
if(texture_cv = imread("stones.jpg")) {
Status=TRUE; // Set The Status To TRUE
glGenTextures(1, &texture[0]); // Create The Texture
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S , GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, 3, texture_cv.cols, texture_cv.rows, 0, GL_RGB, GL_UNSIGNED_BYTE, texture_cv.data);
}
Và nó không được biên dịch vì lỗi này:
error C2451: conditional expression of type 'cv::Mat' is illegal
Bất kỳ lời đề nghị? Làm thế nào tôi nên làm việc chuyển đổi từ cv :: Mat để kết cấu OpenGL?
Tôi nghĩ rằng việc sử dụng OpenCV để tải họa tiết là quá mức cần thiết. Có thư viện DevIL đã được thiết kế rõ ràng cho việc này. – datenwolf
Tôi đang sử dụng OpenCV trong dự án của mình và tôi liên tục thay đổi từ dữ liệu opengl sang opencv, đó là lý do tại sao tôi có ý tưởng giảm thư viện. Cảm ơn anyway cho Devil, tôi sẽ xem xét nó. –
FreeImage cũng là một lựa chọn khác (gần đây) thay thế cho DevIL =) – MiJyn