Я загужаю с помошью Direct3D (DirectX *.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