Войти
ПрограммированиеФорумГрафика

OpenGL. Что выбрать? GLEW, GLAD, glLoadGen, GLXW, libepoxy

Страницы: 1 2 Следующая »
#0

Привет, ребята.

GLEW, GLAD, glLoadGen, GLXW, libepoxy

Посоветуйте, что из них лучше сейчас использовать? (я почитал большую дискуссию на реддите, но интересно, что думают опытные программисты)

Я пишу небольшой игровой движок для саморазвития: хочу чтобы он был кросплатформенный (win, linux, mac os). Использую glfw.

3 мар. 2017

#1

Я за PhantomGL :DDD
Можно загрузиться с почти любого!

Правда официально известно только о GLEW/GLAD/glbinding, epoxy не тестил, а GLXW и glLoadGen пока не внедрял.

3 мар. 2017

#2

Может сначала просто лучше почитать, какая либа что делает? Glew вполне достаточно для загрузки расширений. Но можно и вообще руками описать необходимые для приложения расширения и не тащить с собой еще одну либу.

3 мар. 2017

#3

bool
так ведь все они делают одно и то же. Руками писать расширения совсем не хочется..

3 мар. 2017

#4

coremission
бери любую. Как только наткнешься на реальные проблемы - вот тогда и будешь решать "что лучше" :)

Я лично GLEW использую, он меня всем устраивает. Правда вот советую почитать что делает glewExperimental, один раз он меня подвёл

3 мар. 2017

#5

Лучше ничего из этого не выбирать.

3 мар. 2017

#6

ArchiDevil
а чем оно плохо?)) Думаю, если автор еще не знает толком, какие екстеншены ему нужны, glew вполне подходит. А когда будет знать, скопирует их к себе в хидерочек и все будет ок.

3 мар. 2017

#7

А я правильно понимаю, что помимо загрузки адресов функций в файлах еще и константы, typedef'ы на типы, всякие макросы необходимые?
GLfloat, GL_TRIANGLES, и тп. не хочется ведь все это самому лепить...

Я действительно не знаю какие экстеншны мне нужны, у меня маловато опыта да и проектик как раз для обучения - попробовать что есть.
Я пробовал GLEW, но у меня не получилось сделать кросслплатформенный проект из репозитория, на макоси пытался генерировать экстеншны для релиза 2.0.0 и не получилось, долго ковырялся и решил попробовать GLAD.

5 мар. 2017

#8

coremission
Для некоторых расширений есть константы, да. Бери на самом деле любую универсальную либу, которую тебе удобно. Они не делают ничего, кроме того, что дают тебе хедер с описанием всего и получают указатели на расширения.

5 мар. 2017

#9

coremission
> , но у меня не получилось сделать кросслплатформенный проект из репозитория,
Если хочешь - могу помочь. В ЛС контакты черкани :)

5 мар. 2017

#10

coremission
Вот openglExt, наслаждайся.

Подключаем, все как обычно:

#ifndef OPENGL_H
#define OPENGL_H

#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>

#include <GL/gl.h>
#include "GL/glext.h"
#include "GL/wglext.h"

#endif /* OPENGL_H */

5 мар. 2017

#11

Кстати, не забывай о том что их нужно сначала инициализировать!

Пополняй список, по мере надобности. И все будет ОК.

Простой пример:

+ OpenGL.h

+ OpenGL.cpp

5 мар. 2017

#12

bool
> Думаю, если автор еще не знает толком, какие екстеншены ему нужны, glew вполне
> подходит

Вот. А нужно чтобы знал, и чтобы знал какие экстеншоны можно в случае наличия/отсутствия заменять друг на друга, что учитываю чехарду функционала в дровах - полезно. Так что онли glXGetProcAddress и wglGetProcAddress, с пониманием каждого для чего оно нужно и как какое кор/арб можно заменять.

6 мар. 2017

#13

Laynos, спасибо большое) я решил попробовать GLAD с ним проблем нет пока.
IgorBgz, еще где-то typedefs для PFNGLACTIVETEXTUREPROC нужны где-то. Теперь понятно как это работает примерно)
А можно еще глупый вопрос, для чего объявления глобальных с extern? Для читаемости? Глобальные объявления по умолчанию с внешним связыванием ведь, или я ошибаюсь?

6 мар. 2017

#14

coremission
> еще где-то typedefs для PFNGLACTIVETEXTUREPROC нужны где-то
Все они описаны в файле glext.h, файл я прикрепил к своему первому посту.

//glext.h
typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);

> А можно еще глупый вопрос, для чего объявления глобальных с extern? Для читаемости? Глобальные объявления по умолчанию с внешним связыванием ведь, или я ошибаюсь?
Ключевое слово extern объявляет переменную или функцию и указывает, что она имеет внешние компоновки (ее имя будет видимым не только в пределах файла, в котором она определена, но и в других файлах)

6 мар. 2017

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.