raSystem  1.0 bata
raBillboard.cpp
Go to the documentation of this file.
1 #include "..\include\raMain.h"
2 namespace System
3 {
4  raBillboard::raBillboard(raSmartPointer<raDirectX> dx, LPCSTR textureFileName, bool bAdditive):
5  raTexturedQuad(dx, new raTexturedMaterial(dx.get(),
6  "raEffects\\NoNormals.fx", "RenderWithTexture", textureFileName), true)
7  {
8  m_bAdditive = bAdditive;
9  }
10 
12  const raMatrix& pProj, const raLight* praLight)
13  {
14  raMatrix worldTmp;
15  D3DXMatrixInverse((D3DXMATRIX*)&worldTmp, NULL, (D3DXMATRIX*)&pView);
16 
17  //Skalierung aus der Original-World-Matrix (legt die Größe des Objekts fest)
18  raMatrix ms;
20  worldTmp = ms * worldTmp;
21 
22  //konstante Position im Welt-Koordinatensystem
23  worldTmp.m41 = m_World.m41;
24  worldTmp.m42 = m_World.m42;
25  worldTmp.m43 = m_World.m43;
26 
27  raMatrix mWorldView, mWorldViewProjection;
28  mWorldView = worldTmp * pView;
29  mWorldViewProjection = mWorldView * pProj;
30 
31  for(DWORD matNo = 0; matNo < m_numMaterials; matNo++)
32  {
33  m_pMaterials[matNo]->SetupPerObject(worldTmp, mWorldView,
34  mWorldViewProjection);
35  }
36  }
37 
38  raHimmelkoerper::raHimmelkoerper(raSmartPointer<raDirectX> dx, LPCSTR textureFileName, bool bAdditive):
39  raTexturedQuad(dx, new raTexturedMaterial(dx.get(),
40  "raEffects\\MyEngine.fx",
41  "RenderWithTexture", textureFileName), true)
42  {
43  m_bAdditive = bAdditive;
44  }
45 
47  const raMatrix& pProj, const raLight* praLight)
48  {
49  raMatrix worldTmp;
50  D3DXMatrixInverse((D3DXMATRIX*)&worldTmp, NULL, (D3DXMATRIX*)&pView);
51 
52  //Skalierung aus der Original-World-Matrix (legt die Größe des Objekts fest)
53  raMatrix ms;
55  worldTmp = ms * worldTmp;
56 
57  //konstante Position im Kamera-Koordinatensystem
58  //Das entspricht der Multiplikation unten
59  float zf = pProj.m43/ (1 - pProj.m33) ;
60  float scale = 0.04f * zf;
61 
62  worldTmp.m41 += scale * m_World.m41;
63  worldTmp.m42 += scale * m_World.m42;
64  worldTmp.m43 += scale * m_World.m43;
65 
66  //Jetzt könnte man noch von rechts eine Sklalierung anmultiplizieren,
67  //um die Entfernung vom Beobachter zu skalieren
68 
69  raMatrix mWorldView, mWorldViewProjection;
70  mWorldView = worldTmp * pView;
71  mWorldViewProjection = mWorldView * pProj;
72 
73  //Für die Sonne Entferung zum Betrachter konstant halten
74  raMatrix mScale;
75  mScale = raMatrixScaling(raVector3(scale, scale, scale));
76 
77  /* raMatrix mInvView;
78  D3DXMatrixInverse((D3DXMATRIX*)&mInvView, NULL, (D3DXMATRIX*)&pView);
79  raMatrix worldSkyBox(mScale * (*pWorld));
80  worldSkyBox.m41 = mInvView.m41;
81  worldSkyBox.m42 = mInvView.m42 - scale * 0.2f;
82  worldSkyBox.m43 = mInvView.m43;
83 
84  raMatrix world(worldTmp * worldSkyBox);*/
85 
86  //m_pmWorldViewProj->SetMatrix((float*)&mWorldViewProjection);
87  //m_pmWorld->SetMatrix((float*)&worldTmp);
88 
89  for(DWORD matNo = 0; matNo < m_numMaterials; matNo++)
90  {
91  //if(pView)
92  m_pMaterials[matNo]->SetupPerFrame(praLight);
93  m_pMaterials[matNo]->SetupPerObject(worldTmp, mWorldView,
94  mWorldViewProjection);
95  }
96 
97  //View-Matrix wird aber vom Scenemanager gesetzt
98  //Sollte aber nichts machen, da die hauptsächlich für Transformation der
99  //Normalen in den View Space genutzt wird (Richtungslicht per Pixel)
100  }
101 
102  raCrosshair::raCrosshair(raSmartPointer<raDirectX> dx, LPCSTR textureFileName, bool bAdditive):
103  raTexturedQuad(dx, new raTexturedMaterial(dx.get(),
104  "raEffects\\MyEngine.fx",
105  "RenderWithTextureCenterScreen", textureFileName), true)
106  {
107  m_bAdditive = bAdditive;
108  }
109 };
float m11
Definition: raMatrix.h:12
Definition: raLight.h:5
virtual void SetupPerFrame(const raLight *Light, const raMatrix *pView=NULL, const raMatrix *pProj=NULL)
Definition: raMaterial.cpp:135
raBillboard(raSmartPointer< raDirectX >, LPCSTR textureFileName, bool bAdditive=false)
Definition: raBillboard.cpp:4
float m33
Definition: raMatrix.h:12
RAPI raMatrix raMatrixScaling(const raVector3 &v)
Definition: raMatrix.cpp:100
raHimmelkoerper(raSmartPointer< raDirectX >, LPCSTR textureFileName, bool bAdditive=false)
Definition: raBillboard.cpp:38
float m22
Definition: raMatrix.h:12
bool m_bAdditive
Definition: raVisual.h:110
float m41
Definition: raMatrix.h:12
raCrosshair(raSmartPointer< raDirectX >, LPCSTR textureFileName, bool bAdditive=false)
raMaterial ** m_pMaterials
Definition: raVisual.h:97
virtual void SetupPerObject(const raMatrix &mWorld, const raMatrix &mWorldView, const raMatrix &mWorldViewProjection)
Definition: raMaterial.cpp:121
raMatrix m_World
Definition: raRender.h:34
virtual void SetupEffectVariables(const raMatrix &pView, const raMatrix &pProj, const raLight *pLight)
Definition: raBillboard.cpp:46
virtual void SetupEffectVariables(const raMatrix &pView, const raMatrix &pProj, const raLight *pLight)
Definition: raBillboard.cpp:11
float m43
Definition: raMatrix.h:12
DWORD m_numMaterials
Definition: raVisual.h:96
float m42
Definition: raMatrix.h:12