मैं ओपन जीएल के साथ एक साधारण दृश्य चित्रित कर रहा हूं। मैंने QGLWidget और overriden paintGL() को उपclassed है। वहाँ कुछ भी नहीं फैंसी:स्क्रीन अपडेट करने के लिए QGLWidget को कैसे बाध्य करें?
void CGLWidget::paintGL()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (120.0, 160.0, -300.0, 0.0 + 120.0, 0.0 + 160.0, 2.0 - 300.0, 0.0, 1.0, 0.0);
glScalef(1.0f/300.0f, 1.0f/300.0f, 1.0f/300.0f);
glClear(GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(80.0, width()/(double)height(), 5.0, 100000.0);
glMatrixMode(GL_MODELVIEW);
glBegin(GL_POINTS);
glColor3f(1.0f,0.6f,0.0f);
glVertex3d(x, y, z);
// ...drawing some more points...
glEnd();
}
मैं मुख्य विंडो जो जीएल विजेट के updateGL()
चलाता है में एक टाइमर है। मैंने सत्यापित किया है कि इसके परिणामस्वरूप paintGL()
कहा जा रहा है। हालांकि, स्क्रीन पर वास्तविक तस्वीर केवल बहुत ही कम अद्यतन की जाती है। यहां तक कि अगर मैं खिड़की का आकार बदलता हूं, तो दृश्य अपडेट नहीं होता है। वह क्यों है और मैं इसे अपडेट करने के लिए कैसे मजबूर कर सकता हूं?
मैं पूछ सकते हैं: तुम क्यों 'paintGL' में दो बार प्रक्षेपण और एमवी मैट्रिक्स को प्रारंभ करते हैं? क्या आप बीच में कुछ खींचते हैं? यदि नहीं, तो आप दूसरे मैट्रिक्स को दूसरे के साथ ओवरराइट करते हैं और आप इस कोड को 'resizeGL' (प्रोजेक्शन) और' प्रारंभिक जीएल '(मॉडल-व्यू) – leemes
@leemes में ले जा सकते हैं: कोई विचार नहीं, वास्तव में ... यह एक बग, अवशेष है वास्तव में काम करने वाले प्रक्षेपण और एमवी पैरामीटर खोजने की कोशिश कर रहा हूं। फिक्स्ड, धन्यवाद। –