मुझे glDrawPixels छवि के परिणाम को स्केल करने की आवश्यकता है।glDrawPixels को कैसे स्केल करें?
मैं एक क्यूटी QGLWidget में glDrawPixels के साथ 640x480 पिक्सल छवि बफर ड्राइंग कर रहा हूं।
मैं PaintGL में निम्नलिखित करने के लिए tryed:
glScalef(windowWidth/640, windowHeight/480, 0);
glDrawPixels(640,480,GL_RGB,GL_UNSIGNED_BYTE,frame);
लेकिन यह काम नहीं करता।
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 ();
}
तुम बहुत muuch धन्यवाद, मैं अभी जाँच कर रहा हूँ – Herman
मैंने पाया कि मैं एक glEnable जरूरत/glDisable (GL_TEXTURE_RECTANGLE) क्वाड पर बनावट प्राप्त करने के लिए प्रारंभ/अंत के आसपास जोड़ी है, और मुझे _EXT के बिना GL_TEXTURE_RECTANGLE का उपयोग करने की आवश्यकता है, लेकिन यह अन्यथा मेरे लिए भी पूरी तरह से काम करता है, धन्यवाद! : डी –