में गतिशील रूप से एक बनावट को बदलना मेरे पास कुछ (ओपनसीवी) कोड है जो छवियों को उत्पन्न करता है। मैं ओपनजीएल का उपयोग कर इन्हें प्रदर्शित कर रहा हूं। जब नए चित्र बनाए जाते हैं मैं एक ही texture
नाम और नए image
साथ निम्नलिखित समारोह (हर बार) चलाएँ:ओपनजीएल
void loadCVTexture(GLuint& texture, const cv::Mat_<Vec3f>& image){
if(texture != 0){
glBindTexture(GL_TEXTURE_2D, texture);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image.cols, image.rows, GL_BGR, GL_FLOAT, image.data);
} else {
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, 3, image.cols, image.rows, 0, GL_BGR, GL_FLOAT, image.data);
}
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
मैंने पहलेglutMainLoop()
पहली छवि प्रारंभ और इसे सही ढंग से प्रदर्शित करता है। इसे आईडी 1
दिया गया है। जब मैं छवि को फिर से अपडेट करता हूं तो तस्वीर बदलती नहीं है। (मैंने पुष्टि की है कि प्रदर्शन समारोह कहा जा रहा है, और यह छवि अलग है।)
संपादित करें: एक और सुराग, मेरे पास उप-खिड़कियां हैं। अगर मैं अपनी दूसरी विंडो पर टिप्पणी करता हूं तो कोड अपेक्षित काम करता है।
वैसे, 'glGetError() '' 0' लौटा रहा है। – Geoff
मुझे परेशान है, यह लगता है * बस * दाएं ... – Staffan
जब आप छवि को पुन: चित्रित करने का प्रयास करते हैं तो z-buffer और रंग बफर स्पष्ट होते हैं? क्या स्टैंसिल ऑपरेशन हैं? glScissor? या शायद glViewport अजीब मूल्य पर सेट किया गया था? क्या होता है जब आप SubImage2D के बजाय प्रत्येक फ्रेम glteexImage2d का उपयोग करते हैं? मुझे लगता है कि यह सब-विंडो कोड से संबंधित है - शायद glViewport या glScissors या कुछ समान है। – SigTerm