Текстуры и спрайт

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Bazilius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 14.11.2003 (Пт) 16:07
Откуда: Пермь

Текстуры и спрайт

Сообщение Bazilius » 09.11.2009 (Пн) 10:17

Пытаюсь набросать простенькую 2D игрушку (DirectX8). В игре используется тайловая карта. Подскажите пожалуйста, как лучше поступить – создавать собственный спрайт для каждой текстуры тайла, юнита и элемента интерфейса или же использовать один глобальный спрайт для всех текстур приложения?
In the grim darkness of the far future, there is only war!

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Текстуры и спрайт

Сообщение djalex777 » 09.11.2009 (Пн) 14:21

Bazilius писал(а):один глобальный спрайт для всех текстур приложения

Это как и зачем? Изображения можно хранить каждое в своей текстуре, а можно несколько в одной текстуре. Оптимально (и по быстродействию) хранить в одной текстуре несколько изображений. Спрайт это совсем другое и нужно не для этого.

Bazilius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 14.11.2003 (Пт) 16:07
Откуда: Пермь

Re: Текстуры и спрайт

Сообщение Bazilius » 09.11.2009 (Пн) 15:01

Пример, когда у каждого "объекта" свой спрайт

Код: Выделить всё
Type TileType
       Texture As Direct3DTexture8
       Sprite As D3DXSprite
End Type
Public Tile As TileType

Type MouseType
       Position As D3DVector2
       Texture As Direct3DTexture8
       Sprite As D3DXSprite
End Type
Public Mouse As MouseType

...

Public Sub Render()
        For Y = 0 To 9       
                For X = 0 To 9
                        Tile.Sprite.Draw Tile.Texture, RECT(0, 0, 32, 32), Vec2(1, 1), Vec2(0, 0), 0, Vec2(X * 32, Y * 32), D3DColorARGB(255, 255, 255, 255)
                Next X
        Next Y

        Mouse.Sprite.Draw Mouse.Texture, RECT(0, 0, 32, 32), Vec2(1, 1), Vec2(0, 0), 0, Mouse.Position, D3DColorARGB(255, 255, 255, 255)
End Sub


А вот когда спрайт один на всех:
Код: Выделить всё
Type TileType
       Texture As Direct3DTexture8
End Type
Public Tile As TileType

Type MouseType
       Position As D3DVector2
       Texture As Direct3DTexture8
End Type
Public Mouse As MouseType

Public gSprite As D3DXSprite

...

Public Sub Render()
        For Y = 0 To 9       
                For X = 0 To 9
                        gSprite.Draw Tile.Texture, RECT(0, 0, 32, 32), Vec2(1, 1), Vec2(0, 0), 0, Vec2(X * 32, Y * 32), D3DColorARGB(255, 255, 255, 255)
                Next X
        Next Y
       
gSprite.Draw Mouse.Texture, RECT(0, 0, 32, 32), Vec2(1, 1), Vec2(0, 0), 0, Mouse.Position, D3DColorARGB(255, 255, 255, 255)
End Sub


Вопрос в том, какой способ лучше - когда спрайт у каждого объекта свой, или он один глобальный на всех?
In the grim darkness of the far future, there is only war!

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Текстуры и спрайт

Сообщение djalex777 » 10.11.2009 (Вт) 13:28

Не понял что ты имел ввиду. Теперь понял. Можешь использовать один спрайт.

Bazilius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 14.11.2003 (Пт) 16:07
Откуда: Пермь

Re: Текстуры и спрайт

Сообщение Bazilius » 10.11.2009 (Вт) 13:55

Спасибо! :D
In the grim darkness of the far future, there is only war!


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

    TopList