Имею такую структуру вершины :
Struct Vertex Field x#, y#, z#, tu#, tv#, lu#, lv#, nx#, ny#, nz#, r@, g@, b@, a@ // 44 bytes End
В классе Surface они хранятся таким образом :
Class Surface Field verts:Vertex[1] Field numVerts% End
Это тупо массив структур.
Пытаюсь передать текстурные координаты :
glTexCoordPointer( 2,GL_FLOAT,SizeOf(Vertex),Null )
В спеках говорится, что первый параметр это количество координат на один элемент. 3-й это шаг - 44 байта. А вот где смещение в 12 байт указать - не пойму.
mingw
> А вот где смещение в 12 байт указать - не пойму.
Вместо указателя на буфер надо число передать.
mingw
> А вот где смещение в 12 байт указать - не пойму.
Вместо Null надо передавать смещение. Как бы странно это не звучало - бери число, и тайпкасть в поинтер.
MrShoor
> бери число, и тайпкасть в поинтер.
звучит превратно.
языки же умеют адрес поля структуры получать.
(в данном случае получить адрес verts[0].tu)
glTexCoordPointer( 2,GL_FLOAT,SizeOf(Vertex), &verts[0].tu )
@mingw
Struct Vertex Field x#, y#, z#, tu#, tv#, lu#, lv#, nx#, ny#, nz#, r@, g@, b@, a@ End
а что это за язык такой? (смахивает на вариант BASIC-а, потому что в них любили тип перенной указывать символом... или суфиксом или префиксом)
skalogryz
> языки же умеют адрес поля структуры получать.
Только нужен не адрес поля структуры, а дельта, между адресом на поле и адресом на структуру:
&verts[0].tu - &verts[0]
>glTexCoordPointer
FFP должен умереть
Deamon
> FFP должен умереть
Чтобы он умер надо чтобы говноапи умерло, а пока оно живо - всегда ждите таких тем.
=A=L=X=
напомни, через сколько годков ты стал шейдерным гуру?
@Dimich
@MrShoor
@skalogryz
Спасибо! Работает!
skalogryz
> а что это за язык такой? (смахивает на вариант BASIC-а, потому что в них любили
> тип перенной указывать символом... или суфиксом или префиксом)
Да, это просто краткая форма обьявления примитивных переменных... %-Int, #-Float, !-Double, $-String, @-Byte, %%-Long, @@-Short. Хотя можно и словами писать, но на это надо больше букв печатать....
Собоственно BASIC и есть - BlitzMax NG
-----
P.S. Опять понабежало сюда флудеров обсуждать одну-единственную функцию.
innuendo
> напомни, через сколько годков ты стал шейдерным гуру?
Ты походу реально придумал себе, что раз у меня нет проектов на Vulkan или D3D, то твоё мнение что-то может значить.
Где то лет 15 назад когда я пришёл на этот форум я уже понял тогда что если иннуенда о чём то рассуждает, то это тупое и гонево.
Как ты дожил до жизни такой?
Тебя никто тут не уважает, ты постоянно всех раздражешь ни к месту вставленными ремарками о якобы своём каком то особом видении мира и понимании о чём идёт речь...
Но по факту только это от тебя тут и слышится - глухое и тупое раздражение твоими тупыми ремарками.
Ты этот свой образ доказывал десятками лет и что? Это ты думаешь лечится?
=A=L=X=
спасибо - поржал от души
mingw
Извини за флуд, но вот просто интересно: а какая связь между BlitzMax и glTexCoordPointer? Там же вроде не должно быть такого низкого уровня...
innuendo
> Извини за флуд, но вот просто интересно: а какая связь между BlitzMax и
> glTexCoordPointer? Там же вроде не должно быть такого низкого уровня.
Interfacing with C
без этого никак. (если ты не позволяешь цеплять внешние библиотеки, то ты априори устарел)
чтобы не замарачиваться с type-castom можно glTexCoordPointer переопределить и последним параметром принимать Size_T
skalogryz
Это описано про оригинальный BlitzMAX. Там инфа устарела. Теперь FASM выкинут и язык полностью перешел на компилятор MinGW.
skalogryz
> чтобы не замарачиваться с type-castom можно glTexCoordPointer переопределить и
> последним параметром принимать Size_T
А вот отсюда можно подробнее? Что это за зверь такой Size_T ? В доках написано кратко, но непонятно... - "Unsigned 32/64 bit integer type"
Тема в архиве.