Friday, June 13, 2014

Разработка OpenGL ES приложений на Linux

Намедни понадобилось разобраться с OpenGL ES версии 2+. Т.к. приставка ES подразумевает, что данная реализация OpenGL встраиваемая, то сразу же возник вопрос о комфортном рабочем окружении. В идеале мне нужно было иметь возможность запускать программы на моем PC без использования доп. устройств, эмуляторов. После недолго гугления на горизонте появилось несколько возможных решений. Я последовал самому простому из них. Все описанное ниже было выполнено на Debian Wheezy.

Настройка

Для начала нам нужно установить необходимы библиотеки и заголовочные файлы:

sudo apt-get update
sudo apt-get install freeglut3 freeglut3-dev binutils-gold g++ cmake libglew-dev mesa-common-dev build-essential libglew1.5-dev libglm-dev

После проверяем, что OpenGL и GLX доступны в нашей системе:

glxinfo | grep OpenGL
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Desktop x86/MMX/SSE2
OpenGL version string: 2.1 Mesa 8.0.5
OpenGL shading language version string: 1.20
OpenGL extensions

Первая программа

Создадим отдельную директорию, куда добавим файл main.c следующего содержания:

#include <GL/freeglut.h>
#include <GL/gl.h>

void render(){
  glClearColor(0.0, 0.0, 0.0, 0.0);
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(1.0, 1.0, 1.0);
  glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
  
  glBegin(GL_POLYGON);
  glVertex2f(-0.5, -0.5);
  glVertex2f(-0.5, 0.5);
  glVertex2f(0.5, 0.5);
  glVertex2f(0.5, -0.5);
  glEnd();
  glFlush();
}

int main(int argc, char** argv){
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_SINGLE);
  glutInitWindowSize(500, 500);
  glutInitWindowPosition(100, 100);
  glutCreateWindow("OpenGL - demo");
  glutDisplayFunc(render);
  glutMainLoop();
  return 0;
}

Makefile:

CC=gcc
SOURCES=$(wildcard *.c) 
C_FLAGS=
LD_FLAGS=-lglut -lGL -lGLEW -lGLU
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=main

all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJECTS)
 $(CC) $(OBJECTS) -o $@ $(LD_FLAGS) 

.c.o:
 $(CC) $(C_FLAGS) $< -o $@

clean:
 rm -rf *o main

Сборка и запуск программы:

make
gcc -c -o main.o main.c
gcc main.o -o main -lglut -lGL -lGLEW -lGLU
./main

Ресурсы

No comments:

Post a Comment