그래서 저는 QML에서 OpenGL을 다뤄 왔고 같은 이름의 예제 파일을보고있었습니다. 나는 그것이 어떻게 작동하는지 이해하지만, 여기에있는 것이있다 : 예제의 paint() 함수에 있던 OpenGL Shader 프로그램을 아주 기본적인 Open GL 자료로 대체하려고했다. 그러나 화면에 아무 것도 표시 할 수 없었습니다. 내가 바꿀 수 있었던 유일한 것은 배경색이었다. 그래서 뷰포트, 카메라 등을 화면에 설정하는 데 필요한 것이 무엇인지 궁금합니다. 나는 OpenGL에 대해 (녹슬었던) 경험이 있지만, 과거에는 항상 프리 글루트 (freeglut) 같은 것들이 있었기 때문에 삶이 좀 쉬워졌습니다. 모든 포인터 또는 예제 (내가 볼 수있는 페인트() 메서드에서 올바른 방향으로 배울 수있는 뭔가) 많이 인정 될 것입니다 ...QML에서 OpenGL
편집 : 그래서 여기에 페인트() 메서드가 있습니다.
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
감사합니다 mk5! 비슷한 점도 생각하고있었습니다. 모델과 투영 행렬에 대한로드 ID를 추가했습니다 (위의 코드 편집). 그런 다음 삼각형을 z 축을 따라 앞뒤로 움직이려고했습니다. 그것을 더 크게 만든다. 등 등,하지만 결코 화면에 나타나지 ... – kbrown
게시 된 코드를 시도하고 그것은 나를 위해 잘 작동합니다. 여기에 우리가 보지 못하는 것이 있습니다. 'm_viewportSize'는 올바른 값을 포함합니까? 호환성 문맥을 사용하고 있습니까? 'glGetErrors()'는 에러를 보여줍니까? –