Visual Studio und shader files
-
Ich benutze als IDE Microsoft Visual C++ 2010 Express
Ich würde gerne shader files benutzen, wie geht das?
Wenn ich das Tutorial von rastertek runterlade sind die da schon drin und läuft alles,aber wenn ich shader files manuell erzeugen will weiß ich irgenwie nicht wie;(
Kann mir das ma fix einer sagen?
-
einfach .vs oder .ps hinter schreiben.. soeinfach kanns gehen....^^
-
Shader kannst du mit jedem beliebigen Texteditor schreiben. Wenn du Syntax highlighting haben möchtest, dann gibt es für Visual Studio Addins, z.b. NShader. Allerdings reicht dir dafür die Express Version nicht aus.
-
Du kannst die shader Datei einfach *.h nennen und in Visual Studio einbinden.
Dann ist das Highlighting nicht perfekt, aber besser als z.B. den Windows-Texteditor zu verwenden.
-
mmh, habe nen neues Problem...
kennt jemand dieses Tutorial?von Rastertek.com?
Da wird ja als stütze,wenn was schief läuft ne messagebox angezeigt um zu sagen wo der Fehler liegt...
Im Tutorial steht,aber nicht was man dann tun soll wenn erscheint...Die erste Messagebox sagt:
error compiling shader. check shader-error.txt for messageDas steht in shader-error.txt drin:
error X3501: 'ColorVertexShader': entrypoint not foundDie zweite Messagebox sagt:
could not initialize the color shader objectWo genau werden, die shader dateien abgelegt?
ccp werden bei "Quelldateien" eingeordnet
header in "Headerdateien"Im Tutorial steht da zusätzlich noch shader files,wie bekomme ich den da rein?
Oder wo liegt das problem?
-
Arbeitest du mit OpenGL oder DirectX?
Ablegen kannst du die Shader wo du möchtest, denn um das Laden muss du dich selbst kümmern. Unter OpenGl funktioniert das ungefähr auf diese Art.int id= glCreateShader(type); glShaderSource(id, SHADERTEXT); glCompileShader(id);
In der Variable Shadertext befindet sich dann der Quellcode vom Shader, den du vorher in einen String etc. einlesen musst.
-
danke für deine Antwort benutze,aber DirectX 11
Muss dazu sagen das ich noch gaaaanzz am Anfang stehe^^
Und das ganze gerne hinter frage was da so in diesem Tutorial geschrieben wird es selber nach zu bauen und so...
Selbst mit copy&paste kommt der selbe fehler und wenn ich das "richtige Tutorial"(was als download zur verfügung steht) aus führe bekomme ich mein "Dreieck" merkwürdigerweise...weißte zufällig wie das in DirectX aussieht? und wo das eingefügt werden muss?
Und das würde dann nen "standard" sein damit die shaders funktionieren?
-
Mit DirectX kenne ich mich leider nicht aus, aber da gibt es die Methode "D3DX11CompileFromFile(...)". Es sieht so aus, als ob du da direkt den Dateinamen zu deinem Shaderfile angeben kannst. Google am besten mal danach
-
Mit Direct3D schaut das so aus: http://msdn.microsoft.com/en-us/library/windows/desktop/dd607324.aspx
-
Hallo,
ja der Link mag für dich toll sein,aber für mich ist es der reinste Dschungel^^
Im Tutorial wurde D3DCompileFromFile benutzt, soll ich jetzt stattdessen das nehmen was du mir gelinkt hast?
Das was ich drin hatte sah so aus:
bool ColorShaderClass::InitializeShader(ID3D11Device* device, HWND hwnd, WCHAR* vsFilename, WCHAR* psFilename) { HRESULT result; ID3D10Blob* errorMessage; ID3D10Blob* vertexShaderBuffer; ID3D10Blob* pixelShaderBuffer; D3D11_INPUT_ELEMENT_DESC polygonLayout[2]; unsigned int numElements; D3D11_BUFFER_DESC matrixBufferDesc; // Initialize the pointers this function will use to null. errorMessage = 0; vertexShaderBuffer = 0; pixelShaderBuffer = 0; // Compile the vertex shader code. result = D3DX11CompileFromFile(vsFilename, NULL, NULL, "ColorVertexShader", "vs_5_0", D3D10_SHADER_ENABLE_STRICTNESS, 0, NULL, &vertexShaderBuffer, &errorMessage, NULL); if(FAILED(result)) { // If the shader failed to compile it should have writen something to the error message. if(errorMessage) { OutputShaderErrorMessage(errorMessage, hwnd, vsFilename); } // If there was nothing in the error message then it simply could not find the shader file itself. else { MessageBox(hwnd, vsFilename, L"Missing Shader File", MB_OK); } return false; } // Compile the pixel shader code. result = D3DX11CompileFromFile(psFilename, NULL, NULL, "ColorPixelShader", "ps_5_0", D3D10_SHADER_ENABLE_STRICTNESS, 0, NULL, &pixelShaderBuffer, &errorMessage, NULL); if(FAILED(result)) { // If the shader failed to compile it should have writen something to the error message. if(errorMessage) { OutputShaderErrorMessage(errorMessage, hwnd, psFilename); } // If there was nothing in the error message then it simply could not find the file itself. else { MessageBox(hwnd, psFilename, L"Missing Shader File", MB_OK); } return false; }
http://www.rastertek.com/dx11tut04.html <--- ganz unten kann man sich das Projekt runterladen,damit ihr ungefähr wisst wo mein problem liegen könnte
Ich kann leider mit diesen 2 Zeilern nix Anfangen, die da gelinkt hast;(
Wenn ich da rumprobiere bekommt mein Programm nur die Zusatzfunktion das ich es mit Taskmanager schließen muss^^Ich noch viel lernen muss...
-
Pünktchen schrieb:
ja der Link mag für dich toll sein,aber für mich ist es der reinste Dschungel^^
was ist denn das ziel des ganzen? willst du lernen wie alles funktioniert, oder willst du nur ein bestimmtes ziel hinbekommen?
im ersten muesstest du verstehen lernen was in den tutorials gelehrt wird und auch den "dschungel" muesstest du durchqueren.
im zweiten fall waere es doch viel praktischer etwas fertiges zu nehmen, was einfach zu nutzen ist, z.b. unity.
-
ja,was ich will...
dieser Dschungel ist rieeesen groß und ohne jemanden,der mich führt oder mir nen Säbel in die Hand drückt weiß ich nicht wo ich da bloß anfangen soll...
Ich will das alles mal verstanden haben,dieses Tutorial was ich durcharbeiten möchte,weil es mir sehr ausführlich erscheint,scheint wenn ich es auf eigene Faust versuche nicht so zu klappen wie es mir erzählt wurde...
Nach dem ersten durchqueren des ersten Dschungelteiles(durchlesen,verstehen)
Der Führer(das Tutorial) sagt:"Auf eigene Faust in den Dschungel?Viel Spaß!"
Erzählt mir aber nicht das die Ureinwohner Fallen eingebaut haben um mich aufzuhalten(trotz nachbau des Tutorials,klapppt es nicht)Ich möchte schlicht wissen, wie das mit 3D Funktioniert,sodass ich in 100 Jahren es verstanden habe und anwenden kann!(und wenn ich selbst zum Ureinwohner werden muss)
Ich brauche ja net alles bis zu den Nullen und Einsen zu verstehen,aber so das ich,wenn ich das Tutorial durch habe gut gewappnet bin und einen wichtigen Schritt nach vorne mache.Aber dazu muss das was ich da lese und verstehen will auch richtig sein,wo von ich ausgehe... aber wurde nicht gesagt,wie man mit Fehler XY richtig umgeht bzw. die Fallen entschärft
Wenn das die Vorraussetzung ist,dann muss ich nochma ne Ebene tiefer und mich nochma mit unserem eigenen heimischen Wald auseinander setzten.