Войти
ПрограммированиеФорумГрафика

смещение буффера в OpenGL

Страницы: 1 2 Следующая »
#0
(Правка: 5:49) 5:47, 5 дек. 2019

Имею такую структуру вершины :

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 байт указать - не пойму.


#1
5:55, 5 дек. 2019

mingw
> А вот где смещение в 12 байт указать - не пойму.
Вместо указателя на буфер надо число передать.

#2
7:30, 5 дек. 2019

mingw
> А вот где смещение в 12 байт указать - не пойму.
Вместо Null надо передавать смещение. Как бы странно это не звучало - бери число, и тайпкасть в поинтер.

#3
(Правка: 8:20) 7:59, 5 дек. 2019

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-а, потому что в них любили тип перенной указывать символом... или суфиксом или префиксом)

#4
8:45, 5 дек. 2019

skalogryz
> языки же умеют адрес поля структуры получать.
Только нужен не адрес поля структуры, а дельта, между адресом на поле и адресом на структуру:
&verts[0].tu - &verts[0]

#5
13:18, 5 дек. 2019

>glTexCoordPointer
FFP должен умереть

#6
15:59, 5 дек. 2019

Deamon
> FFP должен умереть

Чтобы он умер надо чтобы говноапи умерло, а пока оно живо - всегда ждите таких тем.

#7
16:00, 5 дек. 2019

=A=L=X=

напомни, через сколько годков ты стал шейдерным гуру?

#8
(Правка: 16:40) 16:26, 5 дек. 2019

@Dimich
@MrShoor
@skalogryz

Спасибо! Работает!

skalogryz
> а что это за язык такой? (смахивает на вариант BASIC-а, потому что в них любили
> тип перенной указывать символом... или суфиксом или префиксом)

Да, это просто краткая форма обьявления примитивных переменных... %-Int, #-Float, !-Double, $-String, @-Byte, %%-Long, @@-Short. Хотя можно и словами писать, но на это надо больше букв печатать....

Собоственно BASIC и есть - BlitzMax NG

-----

P.S. Опять понабежало сюда флудеров обсуждать одну-единственную функцию.

#9
16:54, 5 дек. 2019

innuendo
> напомни, через сколько годков ты стал шейдерным гуру?

Ты походу реально придумал себе, что раз у меня нет проектов на Vulkan или D3D, то твоё мнение что-то может значить.
Где то лет 15 назад когда я пришёл на этот форум я уже понял тогда что если иннуенда о чём то рассуждает, то это тупое и гонево.
Как ты дожил до жизни такой?
Тебя никто тут не уважает, ты постоянно всех раздражешь ни к месту вставленными ремарками о якобы своём каком то особом видении мира и понимании о чём идёт речь...
Но по факту только это от тебя тут и слышится - глухое и тупое раздражение твоими тупыми ремарками.
Ты этот свой образ доказывал десятками лет и что? Это ты думаешь лечится?

#10
16:56, 5 дек. 2019

=A=L=X=

спасибо - поржал от души

#11
16:57, 5 дек. 2019

mingw
Извини за флуд, но вот просто интересно: а какая связь между BlitzMax и glTexCoordPointer? Там же вроде не должно быть такого низкого уровня...

#12
(Правка: 17:13) 17:07, 5 дек. 2019

innuendo
> Извини за флуд, но вот просто интересно: а какая связь между BlitzMax и
> glTexCoordPointer? Там же вроде не должно быть такого низкого уровня.
Interfacing with C
без этого никак. (если ты не позволяешь цеплять внешние библиотеки, то ты априори устарел)

чтобы не замарачиваться с type-castom можно glTexCoordPointer переопределить и последним параметром принимать Size_T

#13
17:16, 5 дек. 2019

skalogryz

Это описано про оригинальный BlitzMAX. Там инфа устарела. Теперь FASM выкинут и язык полностью перешел на компилятор MinGW.

#14
(Правка: 23:21) 23:20, 5 дек. 2019

skalogryz
> чтобы не замарачиваться с type-castom можно glTexCoordPointer переопределить и
> последним параметром принимать Size_T

А вот отсюда можно подробнее? Что это за зверь такой Size_T ? В доках написано кратко, но непонятно... - "Unsigned 32/64 bit integer type"

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика