我想使用 QOpenGLWidget 显示一些图像,而不是使用 QLabel。但是我对如何实现有些困惑。
为了使小部件完成工作,我知道需要重新实现 initializeGL()
方法和 paintGL()
方法。
要获取图像的纹理,我使用的是 SOIL_load_image()
。为什么是 unsigned char* img_data
而不是 unsigned char* img_data[3]
?我认为每个图像像素都有3个值(RGB)。
在获得纹理后,我不知道该做什么以及应该在 initializeGL()
还是 paintGL()
中进行。可以有人告诉我具体步骤吗?
void MyOpenGLWidget::loadTexture(const char* file_path)
{
*image = cv::imread(file_path, cv::IMREAD_COLOR);
width = image->rows;
height = image->cols;
int channels = image->channels();
img_data = SOIL_load_image(file_path, &width, &height, &channels, SOIL_LOAD_RGB);
}