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

16.04.2014, 11:00

Release erstellen

Hallo

Ich habe ein einfaches Programm in c++ directx11 unter windows 7 mit visual studio 2012 geschrieben.
Ich würde für dieses Programm gerne ein lauffähiges Release erstellen, welches auch auf Systemen läuft, welche directx11 installiert haben. Vor allem die Konfiguration des Pixel- und Vertexshaders und der Funktion D3D11CreateDeviceAndSwapChain ist sehr wichtig.


Bitte, teile mit mit, wie ich ein solches Release erstellen kann.

Bei etwaigen fehlenden Information, schreibe was fehlt, so dass ich das nachliefern kann.


Edit: 16.4.2014 13:42 directx9 -> dirtectx11

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »hetlock« (16.04.2014, 13:42)


Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

16.04.2014, 11:08

Dann musst du das ganze mit DirectX9 nochmal programmieren. So einfach ist (leider) die Antwort.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

3

16.04.2014, 13:41

Ok dann in Directx11

Ok , wie schaffe ich es dann ein directx 11 Release zu erstellen ???

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

16.04.2014, 13:48

Wo liegt das Problem?

5

16.04.2014, 14:29

Da ich nur Bekannte habe, welche keine directx 11 lauffähige Grafikkarte haben und bei denen ich mein Programm testen darf, müsste ich das Programm auch auf solchen Rechnern zum laufen bekommen.

Wenn ich das featurelevel auf 9_1 setze und die Shader mit der Einstellung vs_4_0 level 9_1 in der Funktion D3DX11CompileFromFileA mit Parameter "shader_4_0" (siehe Beispiel) im Debugmodus kompiliere, dann

Quellcode

1
hresult0 = D3DX11CompileFromFileA("pixelshader.hlsl",nullptr,nullptr,"main","ps_4_0",D3D10_SHADER_ENABLE_STRICTNESS,0,nullptr,&pixelblob,nullptr,&hresult0);


gibt die Funktion CreatePixelShader eine Fehermeldung aus.

2 Lösungsmöglichkeiten:

1. Man bekommt das Programm auf Rechnern, welche keine directx11 kompatibele Grafikarte haben zum laufen und jemand erklärt mir wie ich ein solches lauffähiges Release erstelle. Inklusive linking und dlls und all den anderen Dingen, die da dazugehören ein Release zu erstellen.

2. Es gibt eine Möglichkeit zu testen, ob das Programm auf Rechnern mit directx11 kompatibeler Grafikkarte laufen würde, und jemand erklärt mir wie ich ein solches lauffähiges Release erstelle. Inklusive linking und dlls und all den anderen Dingen, die da dazugehören ein Release zu erstellen.


Ich würde mal gerne meine Programme auf github online stellen. Aber ohne sourcecode sonderen als exe, welche auch funktioniert.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

16.04.2014, 14:35

[...] gibt die Funktion CreatePixelShader eine Fehermeldung aus.

Und was für eine Fehlermeldung wäre das genau?

7

16.04.2014, 17:09

Tipp: Das Shader Model „vs_4_0“ gab es in Direct3D „9_1“ noch nicht. Schau mal hier rein: MSDN – Shader Models vs Shader Profiles

8

16.04.2014, 21:53

Die Fehlermeldung heißt EINVALIDARG, und wird von der Funktion CreateInputLayout erzeugt.

Ok. Also ich will ein Release erstellen, welches ich auf github veröffentlichen kann, da ich gerne ein paar Freunden von mir mein Projekt zeigen würde. Und einige haben eben keine zu directx11 kompatibele Grafikkarte.


Ist es überhaupt möglich Shader, welche die Syntax von Shadermodel 5_0 verwenden und eine Anwendung welche auf dir Funktionen von directx11 aufbaut, überhaupt ein Release für directx9 zu erstellen?


Wenn nicht ( was ich für wahrscheinlich halte) so erkläre mir bitte, wie ich ein Release für directx11 generiere, welches auch auf anderen Rechneren mit einer directx11 kompatibelen Grafikkarte, läuft. Wie ich zum Beispiel dlls zu binden habe.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »hetlock« (16.04.2014, 22:00)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

16.04.2014, 23:20

Stell mal bitte deine Frage konkreter? Ich gehe davon aus, dass du jetzt mit C++ und Visual Studio eine C++ 11 Anwendung geschrieben hast und dabei die Anwendung im Debug Modus erzeugst. Du möchtest das ganze jetzt auf den Release Modus umstellen und passend linken und kompilieren? Im Prinzip geht das ja genau wie im Debug Modus auch. Du benötigst möglicherweise andere Versionen der DLLs ( bei DirectX haben die Debug Versionen immer ein d Suffix im Namen ). Danach sollte es eigentlich ausreichen das ganze zu kompilieren. Die Rechner deiner Bekannten müssen natürlich die passende Hardware haben. Zusätzlich müssen sie minimal die von dir genutzte DirectX Version installiert haben. Visual Studio Redistributables müssen auch installiert sein. Danach sollte es eigentlich laufen wenn ich grad nichts vergessen habe. Hilft dir das weiter? Oder geht deine Frage eigentlich in eine ganz andere Richtung?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

10

17.04.2014, 00:04

Ja genau das will ich machen. So wie du das formuliert hast. Ich verwende directx11 und c++03. Also die 11 steht für directx11. Ich würde gerne die Visual Studio Redistributables mit dem Release mitliefern. Und wenn es geht auch die geeigneten directx11 dlls.

Werbeanzeige