我嘗試使用現代管道實現的方式在OS X 10.9上用Qt(v5.1.1)編寫OpenGL項目。但是,我遇到一些問題,例如從教程中重建程序。 http://qt-project.org/wiki/How_to_use_OpenGL_Core_Profile_with_QtOpenGL版本在OS X上的支持
簡單的三角形不顯示,但沒有警告,程序本身出現。我懷疑我的mac可能不支持GLSL。所以我尋找一種方法來打印一些信息。我發現有類似問題的人是這樣做的。
#include <QApplication>
#include <QGLFormat>
#include "glwidget.h"
int main(int argc, char* argv[])
{
QApplication mApplication(argc, argv);
QGLFormat mGlFormat;
mGlFormat.setVersion(3, 3);
mGlFormat.setProfile(QGLFormat::CoreProfile);
mGlFormat.setSampleBuffers(true);
qDebug() << "OpenGL context QFlags " << mGlFormat.openGLVersionFlags();
qDebug() << "OpenGL context " << mGlFormat;
GLWidget mWidget(mGlFormat);
mWidget.show();
qDebug() << "OpenGL context" << mWidget.format();
qDebug() << "Driver Version String:" << glGetString(GL_VERSION);
return mApplication.exec();
}
我得到了一個結果。
OpenGL上下文QFlags QFlags(爲0x1 | 0X2 |爲0x4 | 0x8中| 0×10 |爲0x20 | 0x40的|×1000 |爲0x2000 | 0x4000的| 0x8000)時
OpenGL上下文QGLFormat(選項QFlags(爲0x1 | 0X2 |爲0x4 | 0x20 | 0x80 | 0x200 | 0x400),plane 0,depthBufferSize -1,accumBufferSize -1,stencilBufferSize -1,redBufferSize -1,greenBufferSize -1,blueBufferSize -1,alphaBufferSize -1,samples -1,swapInterval -1,majorVersion 3 ,minorVersion 3,簡檔1)
OpenGL上下文QGLFormat(選項QFlags(爲0x1 | 0X2 |爲0x4 |爲0x20 | 0x80的|爲0x200 | 0x400的),平面0,depthBufferSize 1,accumBufferSize -1,stencilBufferSize 1,redBufferSize -1, greenBuff erSize -1,-1 blueBufferSize,alphaBufferSize -1,樣品4,swapInterval -1,majorVersion 3,minorVersion 3,曲線1)
驅動程序版本字符串:0x10800e6be
即使我不知道這個的確切含義源於這個想法的源頭,看起來0x8000意味着OpenGL 3.3首次被支持,但由於後面的標誌只有0x400,版本支持在某種程度上會丟失。
我的圖形卡是NVIDIA GeForce 9400M 256 MB,它應該支持OpenGL 3.3。 https://developer.apple.com/graphicsimaging/opengl/capabilities/
- 這是否意味着我不能使用GLSL下,這些配置?
- 如果是這樣,是否有可能升級一些庫或圖形驅動程序?
- 在不支持相同的計算機上啓動時,使用核心配置文件的應用程序會發生什麼情況?
類似的帖子 Can't set desired OpenGL version in QGLWidget
C++ I/O流讓我很煩。我非常肯定,您爲版本字符串打印的值是字符串指向的地址,而不是實際的字符串。您可能需要將其轉換爲'(const char *)'或創建一個'std :: string'。 –
只需在終端輸入'glxinfo',它就會告訴你你的驅動支持什麼。 – cmannett85
@ cmannett85:這裏的問題不是支持哪個版本,而是他實際得到的是什麼版本。默認情況下,OS X將爲您提供OpenGL 2.1上下文,除非您使用適當的像素格式標誌來獲取3.2核心上下文。 –