Войти
ПроектыФорумОцените

QindieGL (эмулятор OpenGL через Direct3D9)

Страницы: 1 2 3 4 5 6 Следующая »
#0
22:18, 25 мая 2011
Изображение

Название: QindieGL (OpenGL wrapper)
Тип: библиотека-wrapper
API: Direct3D 9.0c
Начало разработки: 15 мая 2011
Окончание разработки: как надоест
Текущая версия: 1.0 ревизия 3
Лицензия: GPL v2


Скачать: выбирайте последнюю версию здесь
Исходники: git-репозиторий

Изображение Изображение Изображение

I. Что это такое?

Это библиотека, эмулирующая OpenGL API средствами Microsoft Direct3D 9.0c. Эмуляция не является полной - некоторые возможности пока не реализованы. Однако уже имеющийся функционал позволяет играть в некоторое количество OpenGL-игр.

II. Зачем это может понадобиться?

1) Существуют кривые драйвера (особенно этим грешат мобильные радеоны), в которых нет нормальной поддержки OpenGL, а Direct3D поддерживается. Тогда для игры в OpenGL-игру понадобится этот враппер.
2) Возможность легкого портирования OpenGL-игры на Direct3D или, что более актуально, создание мультиграфического рендера - достаточно подставлять ей нужную библиотеку при запуске. В будущем, вероятно, будет создана статическая библиотека для линковки, что позволит внедрять враппер в движок напрямую, обходясь без манипуляций с DLL.
3) Для прикола. Мне было интересно посмотреть, как OpenGL-игры работают на "чужом" API и даже "не подозревают" об этом. =)

III. Установка и настройка

1) Добавьте в реестр информацию из файла setup.reg
2) Положите файл opengl32.dll в папку с исполняемым файлом игры
3) Запускайте игру
4) Если хотите вернуться к обычному OpenGL-режиму, удалите файл opengl32.dll из папки с игрой

ПРЕДУПРЕЖДЕНИЕ:

1) Некоторые античитерские программы распознают такие библиотеки как читы, поэтому убедитесь, что отключили античитерское защитное ПО. Не рекомендуется экспериментировать с играми, распространяемыми через Steam - можете лишиться аккаунта из-за Valve Anti-Cheat.
2) Некоторые разрешения экрана, поддерживаемые OpenGL, не поддерживаются Direct3D. Прежде чем выбрать нестандартное разрешение, убедитесь, что оно присутствует в списке "Свойства экрана" - "Дополнительно" - "Адаптер" - "Список всех режимов".

III. Список поддерживаемых игр и движков

* - не поддерживаются эффекты светорассеивания в связи с тем, что враппер не умеет читать буфер глубины
** - нормально работает только 2D - меню, PDA и т.п. Остальное пока рисуется с глюками, хотя в целом играбельно.
*** - нужно отключить Z-trick (например, написать в консоли gl_ztrick "0")
**** - нужно отключить Z-trick (открыть "OpenGlDrv.ini" и поставить "UseZTrick" в 0)

IV. Поддерживаемые функции

Аккумулятор - нет
Альфа-тест - да
Альфа-блендинг - да
Begin/End - да
Текстурные объекты - да
Дисплейные списки - нет
Culling - да
Clip planes - да
Освещение - да (частично*)
Материалы - да
Вершинные массивы - да
Вычислители - нет
Туман - да
Распаковка пикселей - да
Упаковка пикселей - да (частично**)
Размер точек - да
Толщина линий - нет
Штриховка - нет
Трафарет - да
Индексный режим - нет
Логические операции - нет
Матрицы - да
Сохранение и восстановление атрибутов - да
Приоритеты текстур - да
Чтение пикселей - да (частично***)
Копирование пикселей - нет
Запись пикселей - нет
Переключение ReadBuffer/DrawBuffer - нет
Выбор - нет
Фидбэк - нет
Отсечение (scissor) - да
Polygon Mode - да (частично****)
Polygon Offset - да (частично****)
Генерация текстурных координат - да*****
Множественные контексты - нет
wglUseFontBitmaps/wglUseFontOutlines - нет
Мультисэмплинг - в настройках враппера******

* - не поддерживается модель двустороннего освещения и спотлайты.
** - пока поддерживается упаковка только в RGB и RGBA.
*** - не поддерживается чтение буфера глубины и трафарета.
**** - только для обеих граней одновременно.
***** - фича реализована программно и может снизить производительность. Используется SSE, если поддерживается (можно отключить, параметр "UseSSE").
****** - параметр "MultiSample". Поставьте его, например, в 8. При включении сглаживания могут возникнуть артефакты со шрифтами в некоторых играх.

V. Поддерживаемые расширения

GL_ARB_multitexture
GL_ARB_texture_border_clamp
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_dot3*
GL_ARB_texture_mirrored_repeat
GL_ARB_texture_non_power_of_two
GL_ARB_transpose_matrix
GL_ATI_texture_mirror_once
GL_EXT_abgr
GL_EXT_bgra
GL_EXT_blend_color
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_compiled_vertex_array
GL_EXT_draw_range_elements
GL_EXT_multi_draw_arrays
GL_EXT_fog_coord
GL_EXT_packed_pixels
GL_EXT_secondary_color
GL_EXT_texture3D
GL_EXT_texture_cube_map
GL_EXT_texture_env_add
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3*
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_lod
GL_EXT_texture_lod_bias
GL_EXT_stencil_two_side
GL_EXT_stencil_wrap
GL_IBM_texture_mirrored_repeat
GL_NV_blend_square
GL_NV_texgen_reflection**
GL_SGIS_multitexture**
GL_SUN_multi_draw_arrays
WGL_ARB_extensions_string
WGL_EXT_swap_control

* - только режим GL_DOT3_RGBA; GL_DOT3_RGB считается эквивалентным GL_DOT3_RGBA.
** - фича реализована программно и может снизить производительность. Используется SSE, если поддерживается (можно отключить, параметр "UseSSE").
*** - только функции glSelectTexture, glMTexCoord2f и glMTexCoord2fv (достаточные для работы мультитекстурирования в GLQuake и Quake2).


VI. Disclaimer

Ну, как обычно:
Автор не несет ответственности за любые программные и/или аппаратные сбои, которые могут произойти в связи с установкой и использованием враппера.
НЕ УСТАНАВЛИВАЙТЕ библиотеку в папку "WINDOWS/System32"!


#1
22:52, 25 мая 2011

Лучше бы обратный финт сделал(эмуляция DirectX на OpenGL). Вот бы красноглазики порадовались =)

#2
22:55, 25 мая 2011

Kondrat_Voronov
Обратный сделать принципиально ничуть не сложнее, но в них вроде бы недостатка нынче нет.

#3
22:59, 25 мая 2011

Сделай враппер для GL3-4, чтобы везде без дров работало и форумные кухарки не ныли.

#4
23:03, 25 мая 2011

Kondrat_Voronov
> обратный финт
Кажется Джо такой сделал. DirectGL

#5
23:05, 25 мая 2011

SNVampyre
Без дров у форумных кухарок не будет работать ни OpenGL, ни Direct3D.
Я прямо даже не знаю, кто породил такой миф, что Direct3D не нужны дрова..

#6
23:50, 25 мая 2011

Помнится мне, какие-то дебилы писали эмулятор OGL ES для винды с использованием Д3Д!!! Капитан очевидность покончил с собой в тот день...

#7
0:53, 26 мая 2011

Хммм, запустить что ли для пущего изврата это всё из под WINE, что бы увидить как эмулируется OpenGL через эмулируемый OpenGL'ем Direct3D9 8) А вообще проект интересный, для простых проектов. Сам такой же фигнёй страдаю, т.к. влом переписывать в d3d-версии двигла много чего, принялся писать свои заточенные gl-функции.

#8
1:13, 26 мая 2011

Andru
> А вообще проект интересный, для простых проектов
В планах и шейдеры 1.х, и 2.0, и компилятор GLSL->HLSL... Но планы на то и планы, чтобы не всегда сбываться =) Пока функциональность растет в арифметической прогрессии, количество багов растёт в геометрической.

#9
7:50, 26 мая 2011

аа понятно почему Kingpin тормозил 8)

#10
9:04, 26 мая 2011

Моласар
> Я прямо даже не знаю, кто породил такой миф, что Direct3D не нужны дрова..
Ты не поверишь, но ставил на старенький нубук от ASUS ось Win7, больше ничего не ставил, игрушки под DirectX работали нормально, OpenGL некоторые запускались но тормозили (После установки дров от видяхи OpenGL и DirectX работали одинаково.

#11
9:21, 26 мая 2011

cdmlex
Старенькие ноутбуки? Где ж их взять, чтобы потестить... У меня из старенького есть только EEE PC 701G со встроенным интелом, но он изначально поддерживал OpenGL.
Насчёт Win7 - охотно верю, в ХР то же самое было со всякими GF4MX, а потом Microsoft перестала писать свои D3D-Only дрова, и если теперь ставишь какой-нибудь GF GTX, то в любом случае придётся качать дрова с сайта производителя. У меня на всех компах и дома, и на работе - исключительно ХР, так что опять же, проверить не получится.

#12
10:59, 26 мая 2011

Моласар
Отличный проект, когда будешь добавлять поддержку шейдеров? хотя-бы Добавь поддержку GL_ARB_fragment_program/GL_ARB_vertex_program уже Doom III будет работать.

#13
11:32, 26 мая 2011

Моласар, делай софтварную эмуляцию, веселее будет =), а D3D9 не покроет и половино функционала GL 2.1 не говоря уже о 3.0 и т.д.

#14
16:11, 26 мая 2011

Andrey
> когда будешь добавлять поддержку шейдеров?
Как только доделаю кое-какие полезные функции FFP.
Не знаю, стоит ли тратить время на поддержку 1.х или сразу заняться 2.0 (ARB-версиями).
Igor'
> делай софтварную эмуляцию, веселее будет
Написать свой SwiftShader?
Нет, боюсь, моих скиллов на это не хватит.
Igor'
> D3D9 не покроет и половино функционала GL 2.1 не говоря уже о 3.0 и т.д.
Так есть же D3D10, D3D11 - что мешает использовать их в перспективе? =)

Страницы: 1 2 3 4 5 6 Следующая »
ПроектыФорумОцените

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