HLFX.Ru Forum
Показать все 5 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- GL_MAX_TEXTURE_IMAGE_UNITS_ARB и GL_MAX_TEXTURE_COORDS_ARB (https://hlfx.ru/forum/showthread.php?threadid=4386)


Отправлено Дядя Миша 04-05-2014 в 17:47:

GL_MAX_TEXTURE_IMAGE_UNITS_ARB и GL_MAX_TEXTURE_COORDS_ARB

Как, всем известно, в FFP режиме текстурных юнитов не может быть более 4.
На данный момент функционал FFP, насколько я знаю, не является аппаратным, а полностью эмулируется. И там просто оставили 4 юнита.
При использовании Cg или GLSL у нас другая картина - там мы опираемся на
GL_MAX_TEXTURE_IMAGE_UNITS_ARB и GL_MAX_TEXTURE_COORDS_ARB.
У меня на GeForce9800GT первый равен 32, а второй - 8.
Первый - это кол-во текстурных юнитов, второй - кол-во текстурных координат. Засада заключается в том, что если я использую более 8 текстурных юнитов, OpenGL выдает GL_ENVALID_ENUM.
Т.е. можно подумать, что он опирается на меньшее значение, хотя, к примеру я текстурных координат использую максимум две штуки, да и те через атрибуты, а не через текскорды.
Почитал вот эту темку: http://www.gamedev.ru/code/forum/?id=32907
где, кстати отметился наш старый знакомец Берсеркер и выяснил такую любопытную вещь:

Цитата:

Если по спецификациям DX,то количество реальных/эмулируемых самплеров:
ps1.1-1.3 -4шт
ps1.4 -6
ps2.0 -8
ps3.0 -16

Правда там написано по спецификациям DX, но что если это и в OGL канает тоже?
Кто что об этом знает?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 04-05-2014 в 17:59:

Цитата:
Дядя Миша писал:
Как, всем известно, в FFP режиме текстурных юнитов не может быть более 4.

32 лимит, аппаратно - зависит от железки, смотри GL_MAX_TEXTURE_UNITS_ARB. У радеонов с пс1.4 там реально шестёрка возвращается.
Цитата:
Дядя Миша писал:
Кто что об этом знает?

Кто делал волатилу, которая работает на всех мыслимых версиях пиксельных шейдеров - тот и знает.
Ну и берсеркер ещё.

Добавлено 05-05-2014 в 00:59:

Цитата:
Дядя Миша писал:
У меня на GeForce9800GT первый равен 32, а второй - 8.

Ну вот, лимит 8 текстур у тебя.
Это ещё фигня, гораздо забавнее, когда драйвер рапортует поддержку vertex texture fetch, a num_vertex_texture_blablabla_arb равно 0. И такое бывает.

__________________

xaerox on Vivino


Отправлено Дядя Миша 04-05-2014 в 18:07:

не-не, я разобрался. Всё дело в вызове
glClientActiveTextureARB
если её не вызывать, то ошибка исчезает.
В принципе я давно заметил, что её перестали вызывать, следовательно она нужна только для FFP.

Добавлено 04-05-2014 в 22:07:

А вот, собственно и подтверждение:

Цитата:

glActiveTextureARB selects which texture unit subsequent texture state
calls will affect. The number of texture units an implementation sup-supports
ports is implementation dependent, but must be at least 2.

Vertex arrays are client-side GL resources, which are selected by the
glClientActiveTextureARB routine.


glClientActiveTextureARB selects the vertex array client state parame-parameters
ters to be modified by glTexCoordPointer, and enabled or disabled with
glEnableClientState or glDisableClientState, respectively, when called
with a parameter of GL_TEXTURE_COORD_ARRAY.

то есть идея такая - биндить текстуры надо через glActiveTexture, а вот задавать текстурные координаты - через glClientAciveTexture

Взято тут: http://www.gamedev.ru/code/forum/?id=62686

Собственно, мне текскорды задавать и не надо, они процедурно в шейдере считаются. Будем знать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 04-05-2014 в 18:14:

Цитата:
Дядя Миша писал:
glClientActiveTextureARB

Это и есть FFP-функция. Зачем её вызывать вместе с glVertexAttribPointer?

Добавлено 05-05-2014 в 01:14:

А ффп твоя держит 8 текстур, а не 4. Проверь из интересу.

__________________

xaerox on Vivino


Отправлено Дядя Миша 04-05-2014 в 18:14:

Низачем. В движке оно, за компанию вызывается.

Добавлено 04-05-2014 в 22:14:

Цитата:
XaeroX писал:
А ффп твоя держит 8 текстур, а не 4. Проверь из интересу.

Скорее всего да, но коварно рапортует про 4.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 17:59.
Показать все 5 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024