티스토리 뷰
목차
반응형
OpenGL ES 3.1 Tutorial, Color Line 예제 (Qt 프로그래밍)
[OpenGL ES 3.1 Tutorial] Qt 프로그래밍
작업 환경
- Ubuntu 14.04
- OpenGL ES 3.1
- Qt 5.3
- ARM Cortex A-15
ARM용 보드에서 Opengl ES를 설치하면 예제 폴더가 생성됩니다.
이하 소스는 기본 예제를 수정한 내용입니다.
1. 버전 설정
저는 OpenGL ES 3.1을 사용하기에 setVersion() 함수에 3과 1을 넘겼습니다.
1 2 3 4 5 6 7 8 9 | void Widget::start() { QSurfaceFormat fmt; fmt.setVersion(3, 1); // ES 3.1 fmt.setProfile(QSurfaceFormat::NoProfile); fmt.setOption(NULL); fmt.setRenderableType(QSurfaceFormat::OpenGLES); } | cs |
2. 라인과 색상 초기화
OpenGL ES 3.1 기본 코드에 보면 좌표와 색상을 설정하는 부분이 있습니다.
라인이 총 4개이니 좌표는 5개가 필요합니다. 그리고 각 좌표에 이르는 동안 그라데이션에 필요한 색상도 필요하죠.
원하는 색상과 위치로 설정해 보세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | static GLfloat vertices[] = { 0.0f, 0.707f, -0.5f, -0.5f, 0.5f, -0.5f, 0.2f, 0.907f, -0.7f, -0.7f }; static GLfloat colors[] = { 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f }; | cs |
3. 메모리 할당
1 2 3 4 5 | m_vbo.create(); m_vbo.bind(); m_vbo.allocate(vertices, sizeof(vertices) + sizeof(colors)); m_vbo.write(sizeof(vertices), colors, sizeof(colors)); m_vbo.release(); | cs |
vbo를 생성하고 메모리를 할당해 줍니다.
일반 라인에 색상을 입혀야 하니 OpenGL ES 3.1에서 allocate() 할 땐 좌표와 색상 모두의 사이즈를 합친 형태가 되어야 합니다.
[Qt 프로그래밍 그래픽 예제]
4. 실제로 그리기
1 2 3 4 5 6 7 8 9 10 | void RenderWindow::render() { if (!m_context->makeCurrent(this)) { emit error(tr("makeCurrent() failed")); return; } ..... ..... ..... f->glDrawArrays(GL_LINE_STRIP, 0, 5); | cs |
Render() 함수는 실제로 그리는 데 필요한 함수입니다.
이미 3번 사항에서 메모리 할당을 끝냈기 때문에 glDrawArrays() 함수만 호출해주면 됩니다.
OpenGL ES 3.1 Tutorial, Color Line 예제 (Qt 프로그래밍)
반응형