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
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
float4x4 WorldMatrix; float4x4 ViewMatrix; float4x4 ProjMatrix; struct vs_output { float4 pos : POSITION; float4 color : TEXCOORD1; }; vs_output vs_main(float4 pos : POSITION) { vs_output outp; pos.w = 0.f; // erste mipmap ebene outp.pos = tex2Dlod(samp, pos); outp.pos = mul(outp.pos, WorldMatrix); outp.pos = mul(outp.pos, ViewMatrix); outp.pos = mul(outp.pos, ProjMatrix); outp.color = float4(1.f, 1.f, 1.f, 0.f); return outp; } float4 ps_main1(float4 col : TEXCOORD1) : COLOR { return col; } TECHNIQUE T2 { PASS P1 { VertexShader = compile vs_3_0 vs_main(); PixelShader = compile ps_2_0 ps_main(); } } |
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 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// positionsdaten float vertices[][4] = { {-1.f, 0.f, 0.f, 1.f}, { 1.f, 0.f, 0.f, 1.f}, { 0.f, 1.f, 0.f, 1.f}, }; // texturkoordinaten als XYZ getarnt float pos[][4] = { {1.f / 32.f, 0.f, 0.f, 0.f}, {2.f / 32.f, 0.f, 0.f, 0.f}, {3.f / 32.f, 0.f, 0.f, 0.f} }; HRESULT hr; // effekt erzeugen hr = dev->CreateTexture(32, 32, 1, 0, D3DFMT_A32B32G32R32F, D3DPOOL_MANAGED, &postex, 0); hr = dev->CreateVertexBuffer(sizeof(pos), 0, D3DFVF_XYZ | D3DFVF_DIFFUSE, D3DPOOL_MANAGED, &vertexbuffer, 0); void *vptr; hr = vertexbuffer->Lock(0, 0, &vptr, 0); memcpy(vptr, pos, sizeof(pos)); vertexbuffer->Unlock(); D3DLOCKED_RECT lockedrect; hr = postex->LockRect(0, &lockedrect, 0, 0); memcpy(lockedrect.pBits, vertices, sizeof(vertices)); postex->UnlockRect(0); // fehlerkontrolle gekürzt |
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 23 24 25 26 27 28 29 30 31 32 |
dev->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.f, 0); dev->BeginScene(); dev->SetStreamSource(0, vertexbuffer, 0, sizeof(float) * 4); dev->SetRenderState(D3DRS_LIGHTING, 0); dev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); dev->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE); dev->SetTexture(0, postex); UINT passes; effect->SetTechnique("T2"); effect->Begin(&passes, 0); // matrizen wurden richtig gesetzt effect->SetMatrix("WorldMatrix", &world); effect->SetMatrix("ViewMatrix", &view); effect->SetMatrix("ProjMatrix", &proj); for (unsigned i = 0; i < passes; ++i) { effect->BeginPass(i); dev->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1); effect->EndPass(); } effect->End(); dev->EndScene(); dev->Present(0, 0, 0, 0); |
Quellcode |
|
1 |
outp.color = float4(1.f, 1.f, 1.f, 1.f); |
Werbeanzeige