0
所以我一直在QML下玩OpenGL,並一直在尋找提供的同名文件。我有點理解它是如何工作的,但這是事情:我嘗試用我自己非常基本的Open GL東西替換示例的paint()函數中的OpenGL Shader程序。但是我無法在屏幕上看到任何可見的東西。我唯一能夠改變的就是背景的顏色。所以我想知道如何設置視口,相機以及屏幕上需要的東西。我在OpenGL上有一些(非常生疏)的經驗,但在過去總會有像freeglut這樣的東西讓生活變得更輕鬆。任何指針或例子(我可以在paint()方法中觀察和學習的東西)將會受到很大的讚賞...QML下的OpenGL
編輯:所以這裏是我在paint()方法中的:
void QtOpenGLViewRenderer::paint()
{
// The following two lines fixed the problem
QOpenGLFunctions glFuncs(QOpenGLContext::currentContext());
glFuncs.glUseProgram(0);
glViewport(0, 0, m_viewportSize.width(), m_viewportSize.height());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.2, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
GLfloat triangle[] = {
0.25f, 0.25f, 0.0f,
0.75f, 0.25f, 0.0f,
0.25f, 0.75f, 0.0f
};
GLfloat colors[] = {
1.0f, 0.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f, 1.0f
};
glVertexPointer(3, GL_FLOAT, 0, triangle);
glColorPointer(4, GL_FLOAT, 0, colors);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glShadeModel(GL_SMOOTH);
glDrawArrays(GL_TRIANGLES, 0, 3);
glFlush();
}
我看到的只是暗紅色的背景,但沒有三角形的標誌。爲什麼是這樣?
嘗試移動一個新的矩陣內的模型也許是當前矩陣堆棧不在其默認狀態。 – mr5 2014-09-24 00:08:45
謝謝mk5!也在思考類似的東西。我爲模型和投影矩陣添加了負載標識(上面編輯的代碼)。然後我試着沿z軸來回移動三角形;讓它更大;等等,但它從來沒有出現在屏幕上...... – kbrown 2014-09-24 00:43:21
我試過發佈的代碼,它對我來說工作正常。所以我們在這裏沒有看到一些東西。 'm_viewportSize'包含正確的值嗎?它是否使用兼容性上下文? 'glGetErrors()'顯示任何錯誤? – 2014-09-24 04:27:56