Намедни понадобилось разобраться с 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