Sono passati 17 giorni Non riesco a scrivere un semplice programma in OpenGL utilizzando QT, ma tutti i tutorial cercati su Google non sono riusciti. Ho compilato il mio QT 5.0.1 con -opengl desktop usando msvc2010 per rendere predefinito il desktop opengl.Risoluzione delle funzioni OpenGL utilizzando glew in QT
Ho letto il tutorial di Sean Harmer, ma è dipeso da QT per risolvere le funzioni opengl.
Secondo alcune persone, non è possibile utilizzare glew in QT, poiché le librerie incorporate di QT impediscono a glew di includere le intestazioni, ma secondo Sean Harmer HERE, è possibile (ma non viene spiegato come) .
Anche utilizzando QGLWidget non sono in grado di utilizzare le estensioni OpenGL.
Ora tutto quello che voglio è utilizzare tutte le funzioni OpenGL separate e tutte le funzioni di windowing da QT separate, cioè nessuna interferenza in OpenGL da parte di QT.
Se qualcuno mi spiega la procedura con la semplice esempio triangolo e con qualsiasi estensione, I'l essere così grato ..
I'v utilizzato biblioteca Glew nel mio progetto e glew.h #included in proprio all'inizio del il mio programma, ma quando compilato dà errore: glwidget.obj: -1: errore: LNK2001: simbolo esterno non risolto imp_ _glewGenVertexArrays
il mio file .pro
QT += core gui opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Trial
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
glwidget.cpp
HEADERS += mainwindow.h \
glwidget.h
FORMS += mainwindow.ui
RESOURCES += \
resources.qrc
win32: LIBS += -L$$PWD/../../../../../OpenGL/glew-1.9.0/lib/ -lglew32s
INCLUDEPATH += $$PWD/../../../../../OpenGL/glew-1.9.0/include
DEPENDPATH += $$PWD/../../../../../OpenGL/glew-1.9.0/include
win32: PRE_TARGETDEPS += $$PWD/../../../../../OpenGL/glew-1.9.0/lib/glew32s.lib
Uscita dal glewInfo: versione 1.9.0 GLEW funzionalità di reporting di PixelFormat 1 in esecuzione su un GeForce GT 540M/PCIe/SSE2 da parte di NVIDIA Corporation OpenGL versione 4.3.0 è supportato
void GLWidget::initializeGL()
{
GLenum err = glewInit();
if(err != GLEW_OK)
{
printf("%s",glewGetErrorString(err));
}
glEnable(GL_DEPTH_TEST);
qglClearColor(QColor(Qt::red));
shaderProgram.addShaderFromSourceFile(QGLShader::Vertex, ":/vertexShader.vsh");
shaderProgram.addShaderFromSourceFile(QGLShader::Fragment, ":/fragmentShader.fsh");
shaderProgram.link();
shaderProgram.bind();
const GLubyte *oglVersion = glGetString(GL_VERSION);
printf("%s\n",oglVersion);
GLfloat vertices[3][3] ={{ -0.5, -0.5, -1 },
{ 0, 0.5, -1},
{ 0.5, -0.5, -1}};
vertexArray.create();
vertexArray.setUsagePattern(QOpenGLBuffer::StaticDraw);
vertexArray.allocate(vertices, 3 * 3 * sizeof(GLfloat));
vertexArray.bind();
shaderProgram.setAttributeBuffer("vVertex", GL_FLOAT, 0, 3);
shaderProgram.enableAttributeArray("vVertex");
GLuint arr[5];
glGenBuffers(5,arr);
}
"Secondo alcune persone, non è possibile utilizzare glew in QT" Sbagliato. La maggior parte delle persone che usano OpenGL nelle app Qt configura le estensioni con GLEW e chiama le funzioni OpenGL raw da 'QGLWidgets'. Ma senza specifici messaggi di errore, il file '.pro' che hai usato, ecc. Non possiamo aiutarti. – cmannett85
errori "simbolo esterno non risolto imp__glew" arriva quando glew32s.lib viene aggiunto con marcatura statica e scompaiono quando glew32.lib viene aggiunto con il contrassegno dinamico. Anche se il mio programma termina in modo imprevisto, quando viene eseguito in modalità di debug, il problema si verifica in glDrawArrays ... – avg598
Se si sta tentando di eseguire il collegamento statico su Windows, è necessario definire il token 'GLEW_STATIC'. Presumibilmente stai chiamando 'glewInit()' una volta che hai un contesto valido. – cmannett85