最新のパイプライン実装の方法で、OS X 10.9 で Qt (v5.1.1) を使用して OpenGL プロジェクトをコーディングしようとしています。ただし、http: //qt-project.org/wiki/How_to_use_OpenGL_Core_Profile_with_Qtなど、チュートリアルからプログラムを再構築する際にいくつかの問題が発生します。
単純な三角形は表示されませんが、警告はなく、プログラム自体が表示されます。私の 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|0x10|0x20|0x40|0x1000|0x2000|0x4000|0x8000)
OpenGL コンテキスト QGLFormat(options QFlags(0x1|0x2|0x4|0x20|0x80|0x200|0x400) , plane 0 , depthBufferSize -1 , accumBufferSize -1 , stencilBufferSize -1 , redBufferSize -1 , greenBufferSize -1 , blueBufferSize -1 , alphaBufferSize -1 、サンプル -1 、swapInterval -1 、メジャーバージョン 3 、マイナーバージョン 3 、プロファイル 1 )
OpenGL コンテキスト QGLFormat(options QFlags(0x1|0x2|0x4|0x20|0x80|0x200|0x400) , plane 0 , depthBufferSize 1 , accumBufferSize -1 , stencilBufferSize 1 , redBufferSize -1 , greenBufferSize -1 , blueBufferSize -1 , alphaBufferSize -1 、サンプル 4 、swapInterval -1 、majorVersion 3 、minorVersion 3 、プロファイル 1 )
ドライバー バージョン文字列: 0x10800e6be
このアイデアのソースで書かれたものから派生したこの正確な意味についてはわかりませんが、0x8000 は OpenGL 3.3 が最初にサポートされていることを意味しているようですが、後のフラグは 0x400 のみであるため、バージョンのサポートは何らかの形で失われています。途中。
私のグラフィック カードは、OpenGL 3.3 をサポートする NVIDIA GeForce 9400M 256 MB です。 https://developer.apple.com/graphicsimaging/opengl/capabilities/
- これらの構成では GLSL を使用できないということですか?
- その場合、一部のライブラリまたはグラフィックス ドライバをアップグレードできますか?
- コア プロファイルをサポートしていないコンピューターで起動すると、コア プロファイルを使用するアプリケーションはどうなりますか?