Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

15.07.2013, 12:01

Cubetexturen mit D3D11

Hi,
da ich so langsam auf Visual Studio 12 umsteigen möchte, da das z.B. ein besseren Compiler besitzt. Allerdings stellt sich mir da die Frage, wie ich eben Cubetexturen laden kann. Im Moment benutze ich zum Laden meiner Texturen DevIL, was für normale Texturen bis jetzt reibungslos abläuft. Nur bei Cubetexturen stellt sich da ein Problem heraus, dass die Textur mit den Daten von DevIL nicht erstellt werden kann - kann es evtl. daran liegen, dass DevIL zwar das DDS Format kann, aber nicht für Cubetexturen?
Aktuell benutze ich noch die Helferfunktion von D3DX, um die Cubetexturen zu laden, aber diese soll es in Visual Studio 12 ja nicht mehr geben.

Meine Textur versuche ich so zu erstellen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ID3D11Texture2D* Textur = nullptr;
D3D11_TEXTURE2D_DESC TexturDesc;
ZeroMemory(&TexturDesc, sizeof(TexturDesc));
TexturDesc.Width = Width;
TexturDesc.Height = Height;
TexturDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
TexturDesc.ArraySize = 6;
TexturDesc.MipLevels = 1;
TexturDesc.Usage = D3D11_USAGE_DEFAULT;
TexturDesc.CPUAccessFlags = 0;
TexturDesc.SampleDesc.Count = 1;
TexturDesc.SampleDesc.Quality = 0;
TexturDesc.MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE;
TexturDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;

D3D11_SUBRESOURCE_DATA TexturData;
ZeroMemory(&TexturData, sizeof(TexturData));
TexturData.pSysMem = Pixel->data(); // Enthält die Daten des Pixel, dabei ist der Datentyp ein unsigned char und die Anordnung wäre RGBA
TexturData.SysMemPitch = Width * 4;
TexturData.SysMemSlicePitch = Width * Height * 4;

mDevice->CreateTexture2D(&TexturDesc, &TexturData, &Textur); // Der HRESULT-Wert wäre: E_INVALIDARG


Ich bedanke mich schon mal im voraus.

LukasBanana

Alter Hase

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

2

15.07.2013, 12:22

Aktuell benutze ich noch die Helferfunktion von D3DX, um die Cubetexturen zu laden, aber diese soll es in Visual Studio 12 ja nicht mehr geben.

Meinst du diese hier: D3DX11CreateTextureFromFile?
Warum soll es die in Visual Studio 2012 nicht mehr geben?
Zu DevIL kann ich dir leider nichts sagen.

3

15.07.2013, 13:18

Jo, die. Ich meine halt irgendwo gelesen zu haben, dass das ganze D3DX und DXUT - wobei ich letztere eh nie verwendet habe - aus den aktuellen SDK bzw. Win8 SDK gekickt wurden ist.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

15.07.2013, 13:33

Ja, D3DX wurde gekicked, was aber eh schon seit Jahren zu erwarten war. Schreib dir einen eigenen DDS Loader, ist nicht wirklich schwer... ;)

http://msdn.microsoft.com/en-us/library/…p/bb943991.aspx

5

16.07.2013, 21:47

Wirklich schwer ist es wirklich nicht. Ich habe mir auch ein kleinen Loader geschrieben und das erstellen der Texturen funktioniert auch einwandfrei.

Werbeanzeige