Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Текстурирование в Direct3D (DirectX 8)

24K
03 февраля 2007 года
pRc.Antikiller
2 / / 03.02.2007
Помогите пожалуйста!!!

Я загужаю с помошью Direct3D (DirectX 8) *.x файл. В этом файле несколько обектов на которые нужно разным способом наложить текстуру. В моём примере текстура всегда растягивается. А мне нужно что бы она раскопировалась по всей области картинки "Замостить". Как мне это сделать???????

Но при этом надо учитывать что все обекты находятся в *.x файле.

Вот часть моего кода:

Код:
'здесь идёт инициализация фала и текстур
Function InitGeometry() As Boolean
On Local Error Resume Next
Dim MtrlBuffer As D3DXBuffer
Dim i As Long
' вот тут грузится X файл
Set g_Mesh = g_D3DX.LoadMeshFromX(App.Path + "\Tiger.x", D3DXMESH_MANAGED, _
                               g_D3DDevice, Nothing, MtrlBuffer, g_NumMaterials)
If g_Mesh Is Nothing Then Exit Function

ReDim g_MeshMaterials(g_NumMaterials)
ReDim g_MeshTextures(g_NumMaterials)

Dim strTexName As String
init_load g_NumMaterials - 1, False
For i = 0 To g_NumMaterials - 1

    ' Копирование материала из буффера MtrlBuffer в массив g_MeshMaterials
    g_D3DX.BufferGetMaterial MtrlBuffer, i, g_MeshMaterials(i)

    ' Установка окружающего цвета материала (D3DX этого не делает)
    g_MeshMaterials(i).Ambient = g_MeshMaterials(i).diffuse
     
    ' Создание текстуры
    strTexName = g_D3DX.BufferGetTextureName(MtrlBuffer, i)
    If strTexName <> "" Then
        progress_load i, "Загрузка... " & strTexName
        Set g_MeshTextures(i) = g_D3DX.CreateTextureFromFile(g_D3DDevice, App.Path + "\" + strTexName)
    End If
Next

Set MtrlBuffer = Nothing

InitGeometry = True
End Function

'функция производет отрисовку сцены
Public Sub Render()
Dim i As Long

g_D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, &HFF&, 1, 0

' Начало сцены
g_D3DDevice.BeginScene

SetupMatrices

' 3d объекты разделены на части (subsets).
' У каждой части свой материал и текстура.
' Рендеринг 3d объекта по частям в цикле:
For i = 0 To g_NumMaterials - 1
    ' Установка материала и текстуры для каждой части
    g_D3DDevice.SetMaterial g_MeshMaterials(i)
    g_D3DDevice.SetTexture 0, g_MeshTextures(i)
    ' Прорисовка части 3d объекта
    g_Mesh.DrawSubset i
Next

' Конец сцены
g_D3DDevice.EndScene

g_D3DDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
End Sub
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог