Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.98.108] |
|
Сообщ.
#1
,
|
|
|
TL;DR; Windows 10 + SDL 2 (SDL2x64.dll с офф сайта) + Angle (libGLESv2.dll скомпиленный ручками)
- SDL2 https://www.libsdl.org/ для отрисовки и манипуляции окошками - Angle https://github.com/google/angle/blob/master/doc/DevSetup.md для доступа к OpenGL Обе библиотечки в бинарном виде (dll) Если по коду, то создаю окошко: 1) Подключаю либы 2) Инициализирю SDL (SDL_Init) в режиме видео 3) Выставляю настройки GL SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); 4) SDL_CreateWindow в режиме SDL_WINDOW_OPENGL 5) Затем создаю SDL_GL_CreateContext для окна - контекст создаётся, возвращает 65537 (для typedef void *SDL_GLContext;) 6) Затем создаю бесконечный цикл и там (while true): 7.1) glClearColor(0.0, 1.0, 0.0, 1.0); // green 1 7.2) glClear(0x00000100 | 0x00004000); // GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT 7.3) SDL_GL_SwapWindow В результате окно создаётся, SDL отрабатывает, но OpenGL не подрубается к нему (по ощущениям) и операции glClearColor/glClear тупо игнорируются. 1) Мб кто сталкивался с подобным? Ибо с дебагом всё чуть сложновато, т.к. язык специфичный для OpenGL))) 2) Всякие glCreateShader перманентно возвращают 0. Может я забыл инициализировать что? Прикреплённая картинка
|
Сообщ.
#2
,
|
|
|
P.S. Заменил на коробочный (который в windows) OpenGL32 и заработало. Но там нет ни функций компиляции шейдеров, ни создания буфера...
Чо делать-то? Прикреплённая картинка
Добавлено Если скопировать этот opengl32.dll из system32 локально и подрубать его, то опять всё ломается. Если же заодно ещё скопировать glu32.dll, то опять всё чинится |
Сообщ.
#3
,
|
|
|
Перед glCreateShader создаётся программа:
program = glCreateProgram(); к коей опосля прицепляется этот шейдер, так что может от несоздания проги ноль возвращается? Добавлено П.С. не надо вечно в цикле задавать glClearColor; достаточно один раз, а потом оно уже знает чем чистить. |
Сообщ.
#4
,
|
|
|
Цитата Славян @ П.С. не надо вечно в цикле задавать glClearColor; достаточно один раз, а потом оно уже знает чем чистить. Славян, это я делал для того, что б отладчиком VS прицепиться к программе и попытаться перехватить этот вызов. Понять почему glClearColor не срабатывает. Сама проблема в том, что с нативным opengl32 - всё ок (но там нет нужного функционала), а libgles (которую я и компилил, и пытался скопипасть из Chrome) - не хочет вообще. Чёрный экран. glClearColor - никак не влияет на неё. Добавлено Заголовки подключаемые и там и там везде одинаковые юзал для того, чтобы либу вхреначить. typedef unsigned int GLbitfield; typedef float khronos_float_t; typedef khronos_float_t GLfloat; extern void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); extern void glClear (GLbitfield mask); |
Сообщ.
#5
,
|
|
|
Сообщ.
#6
,
|
|
|
Цитата Serafim @ Проблема решена Наверно очень секретным методом? |