Подтвердить что ты не робот

Изучение OpenGL в Ubuntu

Я пытаюсь изучить OpenGL и улучшить свои навыки на С++, пройдя Nehe guide, но все примеры для Windows, и я сейчас в Linux. Я действительно не знаю, как заставить работу работать под Linux, а код на сайте, который был портирован для Linux, имеет больше кода в нем, который не объясняется (до сих пор я единственный, работа - это SDL: http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz). Есть ли другой ресурс, который немного более специфичен для OpenGL под Linux?

4b9b3361

Ответ 1

Первое, что нужно сделать, это установить библиотеки OpenGL. Я рекомендую:

freeglut3
freeglut3-dev
libglew1.5
libglew1.5-dev
libglu1-mesa
libglu1-mesa-dev
libgl1-mesa-glx
libgl1-mesa-dev

Как только вы их установили, соединитесь с ними при компиляции:

g++ -lglut -lGL -lGLU -lGLEW example.cpp -o example

В example.cpp включите библиотеки OpenGL, например:

#include <GL/glew.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glext.h>

Затем, чтобы включить более продвинутые опции opengl, такие как шейдеры, поместите это после вызова glutCreateWindow:

GLenum err = glewInit();
if (GLEW_OK != err)
{
    fprintf(stderr, "Error %s\n", glewGetErrorString(err));
    exit(1);
}
fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));

if (GLEW_ARB_vertex_program)
    fprintf(stdout, "Status: ARB vertex programs available.\n");

if (glewGetExtension("GL_ARB_fragment_program"))
    fprintf(stdout, "Status: ARB fragment programs available.\n");

if (glewIsSupported("GL_VERSION_1_4  GL_ARB_point_sprite"))
    fprintf(stdout, "Status: ARB point sprites available.\n");

Это должно включить все функции OpenGL, а если это не так, то это должно сообщить вам о проблемах.

Ответ 2

Я предполагаю, что именно процесс компиляции является самой большой разницей изначально. Вот полезный Makefile для компиляции простых приложений OpenGL на Ubuntu.

INCLUDE = -I/usr/X11R6/include/
LIBDIR  = -L/usr/X11R6/lib

FLAGS = -Wall
CC = g++                                  # change to gcc if using C
CFLAGS = $(FLAGS) $(INCLUDE)
LIBS =  -lglut -lGL -lGLU -lGLEW -lm

All: your_app                             # change your_app.

your_app: your_app.o
    $(CC) $(CFLAGS) -o [email protected] $(LIBDIR) $< $(LIBS) # The initial white space is a tab

Сохраните этот файл с именем Makefile и должен находиться в том же каталоге. Скомпилируйте, написав make из терминала или: сделайте из Vim.

Удачи.

Ответ 3

небольшое обновление для make файла, потому что я нашел эти старые ответы от @Millthorn, и это не сработало: вам не нужно указывать путь include, поскольку он находится в стандартном lib fooobar.com/questions/125709/...

минимальный make файл для компиляции открытого GL может выглядеть так:

LDFLAGS=-lglut -lGL -lGLU -lGLEW -lm
all: your_app

http://surflab.cise.ufl.edu/wiki/Getting_Started_with_OpenGL_in_Ubuntu

Ответ 4

Возможно, вы хотели бы использовать Qt для рисования окон и виджетов.

Здесь учебник, основанный на руководствах Nehe, чтобы показать вам, как создавать образы OpenGL с помощью Qt.

Чтобы узнать OpenGL, необходимо прочитать OpenGL Red Book. Там онлайн-версия. Он имеет очень хорошие объяснения и примеры.