2016-07-26 17 views
1

Ich versuche GlMapBuffer mit einem QOpenGLWidget zu verwenden, aber ich kann es nicht finden. Hier sind meine Dateien enthalten:OpenGL: Wie glMapBuffer mit Qt zu verwenden?

#include <QOpenGLWidget> 
#include <QOpenGLFunctions> 
#include <QOpenGLBuffer> 
#include <QDebug> 
#include <QOpenGLTexture> 
#include <GL/gl.h> 
#include <GL/glext.h> 
#include <QGLFunctions> 
#include <QOpenGLShader> 
#include <QOpenGLShaderProgram> 

Antwort

0

Sie sollten nicht mischen QOpenGL und QGL (entfernen QGLFunctions und so das alte, veraltete OpenGL-Modul in der Projektkonfiguration). Sie müssen gl.h und glext.h nicht einschließen.

Sie haben QOpenGLBuffer hinzugefügt. Das Verfahren map() kapselt glMapBuffer:

// creation 

QOpenGLBuffer buffer = new QOpenGLBuffer(QOpenGLBuffer::VertexBuffer); 
buffer->create(); 

// allocation 

buffer->bind(); 

buffer->allocate(size_of_the_buffer); 

buffer->release(); 

// update 

buffer->bind(); 

void* buffer_data = buffer->map(QOpenGLBuffer::WriteOnly); 

memcpy(buffer_data, your_data_to_copy, size_of_your_data_to_copy); 

buffer->unmap(); 

buffer->release(); 
+0

die Karte() Methode funktioniert für QOpenGLBuffer Objekt, mit der Ausnahme, dass ich glBuffer für meine VBOs bin mit. Ich würde es ändern müssen und ich weiß nicht, wie es geht. – Megatron300

+0

Ein VBO ist ein OpenGL-Puffer wie ein anderer: Verwenden Sie einen QOpenGLBuffer, um ihn zu verwalten. Ich bearbeite meine Antwort mit einem Beispiel – wasthishelpful

+0

Ok, es ist besser mit Ihrem Beispiel, aber ich habe immer noch Fragen. Was entspricht in Ihrem Beispiel glBufferSubData? Brauchen Sie es bereits für die erste Datenübertragung zu aktualisieren? Und wie wird es mit glVertexAttribPointer funktionieren? Wie kann ich den Offset manipulieren, da ich Vertex- und Texturkoordinaten in meinem Puffer übergebe. – Megatron300