He visto muchos ejemplos de código para cargar texturas para OpenGL, muchos de ellos un poco complicados de entender o que requieren nuevas funciones con mucho código.Cargando textura para OpenGL con OpenCV
Estaba pensando que a medida que OpenCV nos permite cargar cualquier formato de imagen que puede ser un simple una forma eficiente para cargar texturas de OpenGL , pero estoy perdiendo algo. Tengo este pedazo de código en 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);
}
Y no es la compilación debido a este error:
error C2451: conditional expression of type 'cv::Mat' is illegal
¿Alguna sugerencia? ¿Cómo debo hacer la conversión de cv :: Mat a OpenGL Texture?
creo que el uso de OpenCV para texturas de carga es excesiva. Está la biblioteca DevIL que ha sido diseñada explícitamente para esto. – datenwolf
Estoy usando OpenCV en mi proyecto y estoy cambiando constantemente de opengl a datos opencv, es por eso que tuve la idea de reducir las bibliotecas. Gracias de todos modos por el DevIL, lo tendré que ver. –
FreeImage es también otra alternativa (más reciente) a DevIL =) – MiJyn