Tôi cần chia tỷ lệ kết quả của hình ảnh glDrawPixels.Làm cách nào để mở rộng quy mô glDrawPixels?
Tôi đang vẽ bộ đệm hình ảnh 640x480 pixel với glDrawPixels trong Qt QGLWidget.
Tôi tryed làm như sau trong PaintGL:
glScalef(windowWidth/640, windowHeight/480, 0);
glDrawPixels(640,480,GL_RGB,GL_UNSIGNED_BYTE,frame);
Nhưng nó không hoạt động.
Tôi đang thiết lập các khung nhìn OpenGL và glOrtho với kích thước của widget như:
void WdtRGB::paintGL() {
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Setup the OpenGL viewpoint
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, windowWidth, windowHeight, 0, -1.0, 1.0);
glDepthMask(0);
//glRasterPos2i(0, 0);
glScalef(windowWidth/640, windowHeight/480, 0);
glDrawPixels(640,480,GL_RGB,GL_UNSIGNED_BYTE,frame);
}
//where windowWidth and windowHeight corresponds to the widget size.
/the init functions are:
void WdtRGB::initializeGL() {
glClearColor (0.8, 0.8, 0.8, 0.0); // Background to a grey tone
/* initialize viewing values */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, windowWidth, windowHeight, 0, -1.0, 1.0);
glEnable (GL_DEPTH_TEST);
}
void WdtRGB::resizeGL(int w, int h) {
float aspect=(float)w/(float)h;
windowWidth = w;
windowHeight = h;
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
if(w <= h)
glOrtho (-5.0, 5.0, -5.0/aspect, 5.0/aspect, -5.0, 5.0);
else
glOrtho (-5.0*aspect, 5.0*aspect, -5.0, 5.0, -5.0, 5.0);
//printf("\nresize");
emit changeSize ();
}
Cảm ơn bạn rất muuch, tôi đang kiểm tra nó ngay bây giờ – Herman
tôi thấy rằng tôi cần một người glEnable/glDisable (GL_TEXTURE_RECTANGLE) cặp xung quanh bắt đầu/kết thúc để có được các kết cấu áp dụng cho quads, và rằng tôi cần thiết để sử dụng GL_TEXTURE_RECTANGLE mà không có _EXT, nhưng điều này nếu không làm việc hoàn hảo cho tôi quá, cảm ơn! : D –