Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++/Directx] Twee textures tekenen

Pagina: 1
Acties:

  • Url
  • Registratie: Juni 2011
  • Laatst online: 21-05 20:46

Url

rechargingshow.com

Topicstarter
He iedereen,

Ik ben bezig om de Oculus Rift te implementeren in een eigen engine. Nu gebruik ik voor de distortion de 'render to texture' methode.

Nu zorgt de shader voor de barrel distortion voor één oog. Natuurlijk wil je met beide ogen wat zien. Het enige wat ik hiervoor moet doen is twee textures op de zelfde quad tekenen. Weet iemand hoe dit precies moet? Ik krijg het niet voor elkaar.

Ik maak al een Flexible Vertex Format met de D3DFVF_TEX2 parameter. Dus er worden 2 texturecoördinaten meegegeven.

C++: RendererDX9.h
1
#define CustomFVF (D3DFVF_XYZ | D3DFVF_TEX2)

C++: CustomVertex.h
1
2
3
4
5
6
7
struct CustomVertex
 {
     float x,y,z;
 // float nx,ny,nz; //Normals for the x,y,z. For expandability (lightning/rotation, etc)
  float tu, tv; //Textures
  float tu2, tv2;
 };


C++: RendererDX9.h
1
2
3
4
5
6
CustomVertex vertices[4] = {
  { -width - 0.5f, height + 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }, //top left
  { width - 0.5f, height + 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f }, // top right
  { -width - 0.5f, -height + 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f }, //bottom left
  { width - 0.5f, -height + 0.5f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f } // bottom right
 };


Alvast Bedankt!

Rechargingshow | rechargingshow.com


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Wil je ze naast elkaar of over elkaar heen?

DX9? Ga je schamen :p

  • Url
  • Registratie: Juni 2011
  • Laatst online: 21-05 20:46

Url

rechargingshow.com

Topicstarter
Ik wil ze graag over elkaar heen hebben, want dan zorgt de shader er voor dat ze uiteindelijk goed komen te staan en je netjes 2 'schermen/ogen' naast elkaar hebt.

Ja het is een oud hobby project waar ik verder aan werk (A).

Rechargingshow | rechargingshow.com


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Je wilt ze dus naast elkaar hebben? Zorg dat je 1 uv-set hebt, en dan kun je twee textures binden en in je shader iets doen als:

C:
1
2
3
4
float4 leftEye = tex2D(leftEyeSampler, float2(uv.x * 0.5, uv.y));
float4 rightEye = tex2D(rightEyeSampler, float2(0.5 + uv.x * 0.5, uv.y));

return uv.x < 0.5 ? leftEye : rightEye;