PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Pointer


Gast
2008-09-04, 23:03:19
Hallo ich habe folgendes kleines Problem: Ich möchte die Texturen einer DirectX .X Datei laden, jedoch möchte ich den Pfad ändern.

Dies funktioniert mit

D3DXCreateTextureFromFile(lpD3DDevice, tempMaterials[i].pTextureFilename,
&x.texture[MeshCounter][i]))

Jetzt möchte ich jedoch die .x files und die Texturen nach /models/.. kopieren. Wenn ich jedoch den zweiten Parameter in

"models/"+tempMaterials[i].pTextureFilename

ändere, kommt die Fehlermeldung, man könne keine 2 Pointer addieren. Klar, das macht Sinn. Doch wie löse ich das Problem?

Danke schonmal

Coda
2008-09-04, 23:20:39
std::string verwenden

Gast
2008-09-04, 23:35:47
ich bekomme es nicht hin :(

Coda
2008-09-04, 23:57:50
Ich würde vorschlagen du beschäftigst dich erstmal intensiver mit C++ bevor du mit D3D rummachst.

Gast
2008-09-05, 00:18:00
Mag sein, dass du Recht hast...

dennoch wäre es schön zu wissen :)

Coda
2008-09-05, 00:23:05
*sigh*

std::string texture_filename = std::string("models/") + tempMaterials[i].pTextureFilename;
D3DXCreateTextureFromFile(lpD3DDevice, texture_filename.c_str(), &x.texture[MeshCounter][i]))

Ungetestet.

Gast
2008-09-05, 00:29:54
Ich danke dir, es funktionert!! :)

Irgendwie finde ich die Behandlung von strings in c++ sehr gewöhnungsbedürftig... naja wird schon noch :)

nochmals danke

The_Invisible
2008-09-05, 08:24:43
wieso? im vergleich zu "strings" in C ist std::string ja ein segen.

finds aber auch ein bisschen komisch das du mit d3d rummachst aber std::string nicht kennst. ;D

mfg

Expandable
2008-09-05, 09:49:37
Ich sag's gerne nochmal: Für Anfänger ist C# + XNA wesentlich besser geeignet als C++ + D3D9/10: Einfacher zu lernen, man hat viel schneller einen Erfolg, weniger frustrierend --> man hat Spaß und bleibt dabei. Man kann sich die ganzen C++-Stolpersteine für Anfänger sparen, man muss nicht erst ewig Code zum Initialisieren des Fensters und des Devices verstehen (bzw. bei den meisten ist das dann ja eh Copy&Paste ohne Sinn und Verstand) und man kann sogar auf der XBOX 360 spielen, falls man XNA Premium Member ist (für Stundenten kostenlos). Später kann man immer noch auf C++/D3D umsteigen.

Gast
2008-09-05, 11:19:23
Ihr habt ja alle recht.
Ich habe zwar schon viel programmiert, aber nicht mit c++. Bisher klappt das schon alles recht gut, sozusagen learning bei doing. Hab hier ja auch einige Bücher liegen (damit ich hier nicht ständig nerve) :)

SGT.Hawk
2008-09-05, 19:41:32
using namespace std;
dann kannst du dir die Scope- Resolution sparen .;)

Gast
2008-09-07, 15:27:15
dann kannst du dir die Scope- Resolution sparen .;)
Wenn du ihm jetzt noch bitte erklärst was das überhaupt bedeutet...

lg

Coda
2008-09-07, 16:02:53
using namespace std;
dann kannst du dir die Scope- Resolution sparen .;)
Sehr schlechter Rat. Es hat seinen Grund warum es Namespaces gibt.

Wenn dann sollte nur std::string eingeblendet werden. Und ganz böse ist es sowas in einem Header zu verwenden.

SGT.Hawk
2008-09-07, 17:49:17
Wenn man weiss, daß es eh keine anderen Implementierungen gibt, ist es doch ok.

Coda
2008-09-07, 19:30:25
std:: enthält unglaublich viel Zeug was du nicht im global scope haben willst. Das macht nur Ärger bei größeren Sachen.