Модератор: BV
Public Sub LoadFromTGA(fName As String, Optional ByVal ColorKey As Long = -1&)
Dim nf As Integer, W As Integer, H As Integer, b As Byte
Dim x As Long, y As Long, t As Long, d As Long
Dim m() As Byte
nf = FreeFile
Open fName For Binary As #nf
Get #nf, 17&, b
If b <> &H18 And b <> &H20 Then Close #nf: Exit Sub
Select Case b
Case &H18: t = 3&: meOp = OpPaint
Case &H20: t = 4&: meOp = OpAlphaBlend
Case Else: Close #nf: Exit Sub
End Select
If ColorKey >= 0& Then meOp = OpAlphaTest
Get #nf, 13&, W
Get #nf, 15&, H
Init W, H, meOp
ReDim m(W * t - 1&)
For y = H - 1& To 0& Step -1&
Get #nf, 19& + W * t * y, m()
For x = 0& To W - 1&
CopyMemory d, m(x * t), t
If meOp = OpAlphaTest Then
If (d And &HFFFFFF) = ColorKey Then cBuf(x, y) = 0& Else cBuf(x, y) = d Or &HFF000000
Else
cBuf(x, y) = d
End If
Next x
Next y
Close #nf
End Sub
Идея номер раз: сделать эффект частиц
Идея номер два: смена цвета текстуры(можно и неравномерная), т.е. что-то вроде эффекта переливчатости
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal Length As Long)
Это для меня тот минимум, который должен иметь в себе стандартный 2D движок.
Mikle писал(а):Кое-чего не будет, например масштабирования, так как движок позиционируется для игр, где это не нужно
Mikle писал(а):z-буфера не будет.
Mikle писал(а):а вот в каком редакторе работать с битовыми каналами
Mikle писал(а):Про RECT не понял - он и так устанавливается для каждого отдельного спрайта.
Mikle писал(а):Я пишу самый нижний уровень
Ты используешь во всю GDI32.dll
Mikle писал(а):Без z-буфера раньше обходились даже в 3D приложениях, а уж в 2D упорядочить по удаленности - не проблема.
Mikle писал(а):При Rect опять боюсь, что понял не до конца.
Mikle писал(а):Не понял, зачем нужно оставлять прежний размер с заливкой цветом, приведи пример для чего.
BV писал(а):- Почему нет функций вывода текста, причём на своём отдельном буфере (Sprite>Create[Text]Buffer/Sprite>Text)?
Mikle писал(а):Не стал я делать такой текст, может быть пока. Просто не вижу смысла - загрузка из объектов VB мне дает то же самое.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40