Та же игра в OGL ESv2 не работает с OGL3 - PullRequest
3 голосов
/ 21 июня 2011

Я написал движок, который умеет рисовать с помощью OpenGL ESv2 или OpenGL 3 Core Profile API. Но недавно часть OpenGL 3 сломалась, и я не могу вспомнить, что я изменил, и я не могу посмотреть в svn commitlog, потому что я разместил его на bountysource, который сейчас недоступен, и перенес его в Google (но с поврежденным портом OGL3 ).

С OpenGL ESv2 все работает нормально, но с OpenGL 3 все растягивается и отражается по горизонтали. Оба даже используют одни и те же матрицы и вершины.

Не путайся. Рендереры OpenGL ESv2 и OpenGL 3 используют разные способы его рендеринга.

OpenGL ESv2 использует VBO. OpenGL 3 использует VAO и VBO.

Мой движок с открытым исходным кодом, поэтому вы можете посмотреть его здесь: Исходный код .

Это должны быть важные части: Класс Sprite , Класс базового окна , Класс окна GL3 , Класс окна GL ESv2

Шейдеры:

GLv2: фраг , верт

GL3: фраг , верт

Вот несколько примеров изображений: OpenGL 3 - Menu OpenGL 3 - Ingame OpenGL ESv2 - Menu OpenGL ESv2 - Ingame

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

редактирование: с окном 480x800 gldebugger показывает эту матрицу:
modviewmat
{1, -0, 0, 0}
{0, 1, 0, 0}
{0, 0, 1, 0}
{5, 770, 0, 1}

projmat
{2, 0, 0, 0}
{0, 2, 0, 0}
{0, 0, -1, 0}
{-1, -1, -0, 1}

1 Ответ

0 голосов
/ 23 июня 2011

Я такой тупой ... потому что у меня 2 класс. 1 базовый класс и 1 конкретная реализация платформы, которая получена из базового класса. Все переменные были созданы в базовом классе И в другом.

Итак, у меня были ручки для матриц в базовом классе и в другом классе.
Дескрипторы OpenGL были инициализированы в базовом классе. В классе gl3 тоже есть дескрипторы, но они не инициализированы, так как это работа базового класса.

tl; dr псевдокод:

базовый класс: glhandle projmatrix
gl3class: glhandle projmatrix

baseclass :: init (): (baseclass) .promatrix.init
gl3class :: update (): (gl3class) .projmatrix.update

/

...