Originally Posted By: Harry Potter

Selbst die sehr einfache Fallback-Technique (siehe unten) funktioniert dort nicht.
Code:
float4 ps_red() : COLOR { return float4(1, 0, 0, 1); }
technique fallback { pass one { PixelShader = compile ps_1_0 ps_red(); } }


Polygone kann die Grafikkarte jedoch problemlos rendern. Nur die Shader funktionieren nicht. Es gibt halt auch Grafikkarten, die nicht für Spiele entworfen wurden, sondern z.B. für CAD, und für schnelles Rendern von Polygonen. Und dort funktionieren dann halt keine Shader.

Ich weiß jetzt nicht was für eine Grafikkarte du da hast, aber diese "speziellen" Grafikkarten sind in der Regel nicht besonders anders, bzw sind teilweise sogar genau die gleiche Hardware wie entsprechende Gaming Modelle, nur dass es andere Treiber gibt, die andere Schwerpunkte und Features haben.

Das Problem in deinem Beispiel ist nicht die tatsache dass es ein Shader ist, sondern viel mehr die, dass der so nicht erlaubt ist. Eigentlich brauchst du nämlich auch einen Vertexshader (der wenn du keinen angibst quasi automatisch erzeugt wird), was zumindest schonmal unschön ist an dem was du da machst, aber vor allem gibst du Shadermodel 1_0 an, dass selbst von DirectX 9 seit Jahren nicht mehr unterstützt wird.

Vollständig und funktionsfähig könnte der Shader zum Beispiel so aussehen:
Code:
float4x4 matWorldViewProj;

float4 Shader_VS(float4 inPos : POSITION, float2 inTex : TEXCOORD0) : POSITION
{
	return mul(inPos, matWorldViewProj);
}

float4 Shader_PS() : COLOR
{
	return float4(1.0f, 0.0f, 0.0f, 1.0f);
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = compile vs_3_0 Shader_VS();
		PixelShader = compile ps_3_0 Shader_PS();
	}
}



Oder im Falle deines Projektes, wo du einfach nur deine Textur sehen möchtest, könnte er z.B. so aussehen:
Code:
float4x4 matWorldViewProj;
texture entSkin1;

sampler2D smpDiffuse = sampler_state
{
	Texture = <entSkin1>;
	
	MinFilter = linear;
	MagFilter = linear;
	MipFilter = linear;
	
	AddressU = Wrap;
	AddressV = Wrap;
};

struct VS_OUT
{
	float4 Pos : POSITION;
	float2 Tex : TEXCOORD0;
};

VS_OUT Shader_VS(float4 inPos : POSITION, float2 inTex : TEXCOORD0)
{
	VS_OUT Out = (VS_OUT)0;
	
	Out.Pos = mul(inPos, matWorldViewProj);
	Out.Tex = inTex;
	
	return Out;
}

float4 Shader_PS(float2 inTex : TEXCOORD0) : COLOR
{
	float4 Color = tex2D(smpDiffuse, inTex);
	return Color;
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = compile vs_3_0 Shader_VS();
		PixelShader = compile ps_3_0 Shader_PS();
	}
}



Originally Posted By: Harry Potter

Dummy-Objekte sind eine tolle Sache, die meiner Meinung nach viel zu selten eingesetzt werden.

Klar kann man das machen, aber dann wäre es eigentlich auch etwas eleganter dafür ein eigenes Dateiformat das speziell auf den jeweiligen zweck ausgelegt ist zu nutzen, bei dem man dann im Fall von paths zum Beispiel auch noch verschiedene Interpolationsmöglichkeiten anbieten könnte. Also klar kannst du auch Vertexanimationen dafür nutzen, aber damit hat das dann nicht mehr viel zu tun. Und klar, für Stoff oder auch Gesichtsanimationen und sicher noch ein paar andere Dinge sind Vertexanimationen recht gut geeignet. Für Gesichter will man aber in der Regel mehr Kontrolle (bzw muss sich ein umfangreicheres System überlegen wie man Vertexanimatonen kombinieren könnte, was mit Gamestudios ent_animate dann nicht mehr funktioniert) was mit nem haufen Bones dann ziemlich genauso gut funktioniert und für Stoff würde ich inzwischen eher Physik nutzen. Aber es gibt natürlich noch andere Dinge bei denen Bones einfach viel umständlicher wären.