mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
maintenance: removed deprecated render code
This commit is contained in:
549
Model3d.cpp
549
Model3d.cpp
@@ -1036,421 +1036,6 @@ void TSubModel::RaAnimation(TAnimType a)
|
||||
}
|
||||
};
|
||||
|
||||
#ifdef EU07_USE_OLD_RENDERCODE
|
||||
void TSubModel::RenderDL()
|
||||
{ // główna procedura renderowania przez DL
|
||||
if( ( iVisible )
|
||||
&& ( fSquareDist >= (fSquareMinDist / Global::fDistanceFactor) )
|
||||
&& ( fSquareDist <= (fSquareMaxDist * Global::fDistanceFactor) ) )
|
||||
{
|
||||
if (iFlags & 0xC000)
|
||||
{
|
||||
glPushMatrix();
|
||||
if (fMatrix)
|
||||
glMultMatrixf(fMatrix->readArray());
|
||||
if (b_Anim)
|
||||
RaAnimation(b_Anim);
|
||||
}
|
||||
if (eType < TP_ROTATOR)
|
||||
{ // renderowanie obiektów OpenGL
|
||||
if (iAlpha & iFlags & 0x1F) // rysuj gdy element nieprzezroczysty
|
||||
{
|
||||
if (TextureID < 0) // && (ReplacableSkinId!=0))
|
||||
{ // zmienialne skóry
|
||||
GfxRenderer.Bind(ReplacableSkinId[-TextureID]);
|
||||
// TexAlpha=!(iAlpha&1); //zmiana tylko w przypadku wymienej tekstury
|
||||
}
|
||||
else
|
||||
GfxRenderer.Bind(TextureID); // również 0
|
||||
if (Global::fLuminance < fLight)
|
||||
{
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, f4Diffuse); // zeby swiecilo na kolorowo
|
||||
glCallList(uiDisplayList); // tylko dla siatki
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, emm2);
|
||||
}
|
||||
else
|
||||
glCallList(uiDisplayList); // tylko dla siatki
|
||||
}
|
||||
}
|
||||
else if (eType == TP_FREESPOTLIGHT)
|
||||
{ // wersja DL
|
||||
matrix4x4 mat; // macierz opisuje układ renderowania względem kamery
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, mat.getArray());
|
||||
// kąt między kierunkiem światła a współrzędnymi kamery
|
||||
vector3 gdzie = mat * vector3(0, 0, 0); // pozycja punktu świecącego względem kamery
|
||||
fCosViewAngle = DotProduct(Normalize(mat * vector3(0, 0, 1) - gdzie), Normalize(gdzie));
|
||||
if (fCosViewAngle > fCosFalloffAngle) // kąt większy niż maksymalny stożek swiatła
|
||||
{
|
||||
double Distdimm = 1.0;
|
||||
if (fCosViewAngle <
|
||||
fCosHotspotAngle) // zmniejszona jasność między Hotspot a Falloff
|
||||
if (fCosFalloffAngle < fCosHotspotAngle)
|
||||
Distdimm = 1.0 -
|
||||
(fCosHotspotAngle - fCosViewAngle) /
|
||||
(fCosHotspotAngle - fCosFalloffAngle);
|
||||
glColor3f(f4Diffuse[0] * Distdimm, f4Diffuse[1] * Distdimm,
|
||||
f4Diffuse[2] * Distdimm);
|
||||
/* TODO: poprawic to zeby dzialalo
|
||||
if (iFarAttenDecay>0)
|
||||
switch (iFarAttenDecay)
|
||||
{
|
||||
case 1:
|
||||
Distdimm=fFarDecayRadius/(1+sqrt(fSquareDist));
|
||||
//dorobic od kata
|
||||
break;
|
||||
case 2:
|
||||
Distdimm=fFarDecayRadius/(1+fSquareDist);
|
||||
//dorobic od kata
|
||||
break;
|
||||
}
|
||||
if (Distdimm>1)
|
||||
Distdimm=1;
|
||||
glColor3f(Diffuse[0]*Distdimm,Diffuse[1]*Distdimm,Diffuse[2]*Distdimm);
|
||||
*/
|
||||
// glPopMatrix();
|
||||
// return;
|
||||
glCallList(uiDisplayList); // wyświetlenie warunkowe
|
||||
}
|
||||
}
|
||||
else if (eType == TP_STARS)
|
||||
{
|
||||
// glDisable(GL_LIGHTING); //Tolaris-030603: bo mu punkty swiecace sie
|
||||
// blendowaly
|
||||
if (Global::fLuminance < fLight)
|
||||
{
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, f4Diffuse); // zeby swiecilo na kolorowo
|
||||
glCallList(uiDisplayList); // narysuj naraz wszystkie punkty z DL
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, emm2);
|
||||
}
|
||||
}
|
||||
if (Child != NULL)
|
||||
if (iAlpha & iFlags & 0x001F0000)
|
||||
Child->RenderDL();
|
||||
if (iFlags & 0xC000)
|
||||
glPopMatrix();
|
||||
}
|
||||
if (b_Anim < at_SecondsJump)
|
||||
b_Anim = at_None; // wyłączenie animacji dla kolejnego użycia subm
|
||||
if (Next)
|
||||
if (iAlpha & iFlags & 0x1F000000)
|
||||
Next->RenderDL(); // dalsze rekurencyjnie
|
||||
}; // Render
|
||||
|
||||
void TSubModel::RenderAlphaDL()
|
||||
{ // renderowanie przezroczystych przez DL
|
||||
if( ( iVisible )
|
||||
&& ( fSquareDist >= (fSquareMinDist / Global::fDistanceFactor) )
|
||||
&& ( fSquareDist <= (fSquareMaxDist * Global::fDistanceFactor) ) )
|
||||
{
|
||||
if (iFlags & 0xC000)
|
||||
{
|
||||
glPushMatrix();
|
||||
if (fMatrix)
|
||||
glMultMatrixf(fMatrix->readArray());
|
||||
if (b_aAnim)
|
||||
RaAnimation(b_aAnim);
|
||||
}
|
||||
if (eType < TP_ROTATOR)
|
||||
{ // renderowanie obiektów OpenGL
|
||||
if (iAlpha & iFlags & 0x2F) // rysuj gdy element przezroczysty
|
||||
{
|
||||
if (TextureID < 0) // && (ReplacableSkinId!=0))
|
||||
{ // zmienialne skóry
|
||||
GfxRenderer.Bind(ReplacableSkinId[-TextureID]);
|
||||
// TexAlpha=iAlpha&1; //zmiana tylko w przypadku wymienej tekstury
|
||||
}
|
||||
else
|
||||
GfxRenderer.Bind(TextureID); // również 0
|
||||
if (Global::fLuminance < fLight)
|
||||
{
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, f4Diffuse); // zeby swiecilo na kolorowo
|
||||
glCallList(uiDisplayList); // tylko dla siatki
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, emm2);
|
||||
}
|
||||
else
|
||||
glCallList(uiDisplayList); // tylko dla siatki
|
||||
}
|
||||
}
|
||||
else if (eType == TP_FREESPOTLIGHT)
|
||||
{
|
||||
// dorobić aureolę!
|
||||
}
|
||||
if (Child != NULL)
|
||||
if (eType == TP_TEXT)
|
||||
{ // tekst renderujemy w specjalny sposób, zamiast
|
||||
// submodeli z łańcucha Child
|
||||
int i, j = (int)pasText->size();
|
||||
TSubModel *p;
|
||||
if (!smLetter)
|
||||
{ // jeśli nie ma tablicy, to ją stworzyć; miejsce
|
||||
// nieodpowiednie, ale tymczasowo
|
||||
// może być
|
||||
smLetter = new TSubModel *[256]; // tablica wskaźników submodeli dla
|
||||
// wyświetlania tekstu
|
||||
ZeroMemory(smLetter, 256 * sizeof(TSubModel *)); // wypełnianie zerami
|
||||
p = Child;
|
||||
while (p)
|
||||
{
|
||||
smLetter[p->pName[0]] = p;
|
||||
p = p->Next; // kolejny znak
|
||||
}
|
||||
}
|
||||
for (i = 1; i <= j; ++i)
|
||||
{
|
||||
p = smLetter[(*pasText)[i]]; // znak do wyświetlenia
|
||||
if (p)
|
||||
{ // na razie tylko jako przezroczyste
|
||||
p->RenderAlphaDL();
|
||||
if (p->fMatrix)
|
||||
glMultMatrixf(p->fMatrix->readArray()); // przesuwanie widoku
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (iAlpha & iFlags & 0x002F0000)
|
||||
Child->RenderAlphaDL();
|
||||
if (iFlags & 0xC000)
|
||||
glPopMatrix();
|
||||
}
|
||||
if (b_aAnim < at_SecondsJump)
|
||||
b_aAnim = at_None; // wyłączenie animacji dla kolejnego użycia submodelu
|
||||
if (Next != NULL)
|
||||
if (iAlpha & iFlags & 0x2F000000)
|
||||
Next->RenderAlphaDL();
|
||||
}; // RenderAlpha
|
||||
|
||||
void TSubModel::RenderVBO()
|
||||
{ // główna procedura renderowania przez VBO
|
||||
if( ( iVisible )
|
||||
&& ( fSquareDist >= (fSquareMinDist / Global::fDistanceFactor) )
|
||||
&& ( fSquareDist <= (fSquareMaxDist * Global::fDistanceFactor) ) )
|
||||
{
|
||||
if (iFlags & 0xC000)
|
||||
{
|
||||
glPushMatrix();
|
||||
if (fMatrix)
|
||||
glMultMatrixf(fMatrix->readArray());
|
||||
if (b_Anim)
|
||||
RaAnimation(b_Anim);
|
||||
}
|
||||
if (eType < TP_ROTATOR)
|
||||
{ // renderowanie obiektów OpenGL
|
||||
if (iAlpha & iFlags & 0x1F) // rysuj gdy element nieprzezroczysty
|
||||
{
|
||||
if (TextureID < 0) // && (ReplacableSkinId!=0))
|
||||
{ // zmienialne skóry
|
||||
GfxRenderer.Bind(ReplacableSkinId[-TextureID]);
|
||||
// TexAlpha=!(iAlpha&1); //zmiana tylko w przypadku wymienej tekstury
|
||||
}
|
||||
else
|
||||
GfxRenderer.Bind(TextureID); // również 0
|
||||
glColor3fv(f4Diffuse); // McZapkie-240702: zamiast ub
|
||||
// glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,f4Diffuse); //to samo,
|
||||
// co glColor
|
||||
if (Global::fLuminance < fLight)
|
||||
{
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, f4Diffuse); // zeby swiecilo na kolorowo
|
||||
glDrawArrays(eType, iVboPtr,
|
||||
iNumVerts); // narysuj naraz wszystkie trójkąty z VBO
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, emm2);
|
||||
}
|
||||
else
|
||||
glDrawArrays(eType, iVboPtr,
|
||||
iNumVerts); // narysuj naraz wszystkie trójkąty z VBO
|
||||
}
|
||||
}
|
||||
else if (eType == TP_FREESPOTLIGHT)
|
||||
{ // wersja VBO
|
||||
/*
|
||||
matrix4x4 mat; // macierz opisuje układ renderowania względem kamery
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, mat.getArray());
|
||||
*/
|
||||
matrix4x4 mat; mat.OpenGL_Matrix( OpenGLMatrices.data_array( GL_MODELVIEW ) );
|
||||
// kąt między kierunkiem światła a współrzędnymi kamery
|
||||
vector3 gdzie = mat * vector3(0, 0, 0); // pozycja punktu świecącego względem kamery
|
||||
fCosViewAngle = DotProduct(Normalize(mat * vector3(0, 0, 1) - gdzie), Normalize(gdzie));
|
||||
if (fCosViewAngle > fCosFalloffAngle) // kąt większy niż maksymalny stożek swiatła
|
||||
{
|
||||
double Distdimm = 1.0;
|
||||
if (fCosViewAngle <
|
||||
fCosHotspotAngle) // zmniejszona jasność między Hotspot a Falloff
|
||||
if (fCosFalloffAngle < fCosHotspotAngle)
|
||||
Distdimm = 1.0 -
|
||||
(fCosHotspotAngle - fCosViewAngle) /
|
||||
(fCosHotspotAngle - fCosFalloffAngle);
|
||||
|
||||
/* TODO: poprawic to zeby dzialalo
|
||||
|
||||
2- Inverse (Applies inverse decay. The formula is luminance=R0/R, where
|
||||
R0 is
|
||||
the radial source of the light if no attenuation is
|
||||
used, or the Near End
|
||||
value of the light if Attenuation is used. R is the
|
||||
radial distance of the
|
||||
illuminated surface from R0.)
|
||||
|
||||
3- Inverse Square (Applies inverse-square decay. The formula for this is
|
||||
(R0/R)^2.
|
||||
This is actually the "real-world" decay of light, but
|
||||
you might find it too dim
|
||||
in the world of computer graphics.)
|
||||
|
||||
<light>.DecayRadius -- The distance over which the decay occurs.
|
||||
|
||||
if (iFarAttenDecay>0)
|
||||
switch (iFarAttenDecay)
|
||||
{
|
||||
case 1:
|
||||
Distdimm=fFarDecayRadius/(1+sqrt(fSquareDist));
|
||||
//dorobic od kata
|
||||
break;
|
||||
case 2:
|
||||
Distdimm=fFarDecayRadius/(1+fSquareDist);
|
||||
//dorobic od kata
|
||||
break;
|
||||
}
|
||||
if (Distdimm>1)
|
||||
Distdimm=1;
|
||||
|
||||
*/
|
||||
GfxRenderer.Bind(0); // nie teksturować
|
||||
// glColor3f(f4Diffuse[0],f4Diffuse[1],f4Diffuse[2]);
|
||||
// glColorMaterial(GL_FRONT,GL_EMISSION);
|
||||
float color[4] = { (float)(f4Diffuse[0] * Distdimm), (float)(f4Diffuse[1] * Distdimm),
|
||||
(float)(f4Diffuse[2] * Distdimm), 0 };
|
||||
// glColor3f(f4Diffuse[0]*Distdimm,f4Diffuse[1]*Distdimm,f4Diffuse[2]*Distdimm);
|
||||
glColorMaterial(GL_FRONT, GL_EMISSION);
|
||||
glDisable(GL_LIGHTING); // Tolaris-030603: bo mu punkty swiecace sie
|
||||
// blendowaly
|
||||
glColor3fv(color); // inaczej są białe
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, color);
|
||||
glDrawArrays(GL_POINTS, iVboPtr, iNumVerts); // narysuj wierzchołek z
|
||||
// VBO
|
||||
glEnable(GL_LIGHTING);
|
||||
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); // co ma ustawiać glColor
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, emm2); // bez tego słupy się świecą
|
||||
}
|
||||
}
|
||||
else if (eType == TP_STARS)
|
||||
{
|
||||
// glDisable(GL_LIGHTING); //Tolaris-030603: bo mu punkty swiecace sie
|
||||
// blendowaly
|
||||
if (Global::fLuminance < fLight)
|
||||
{ // Ra: pewnie można by to zrobić
|
||||
// lepiej, bez powtarzania StartVBO()
|
||||
pRoot->EndVBO(); // Ra: to też nie jest zbyt ładne
|
||||
if (pRoot->StartColorVBO())
|
||||
{ // wyświetlanie kolorowych punktów zamiast
|
||||
// trójkątów
|
||||
GfxRenderer.Bind(0); // tekstury nie ma
|
||||
glColorMaterial(GL_FRONT, GL_EMISSION);
|
||||
glDisable(GL_LIGHTING); // Tolaris-030603: bo mu punkty swiecace sie
|
||||
// blendowaly
|
||||
// glMaterialfv(GL_FRONT,GL_EMISSION,f4Diffuse); //zeby swiecilo na
|
||||
// kolorowo
|
||||
glDrawArrays(GL_POINTS, iVboPtr,
|
||||
iNumVerts); // narysuj naraz wszystkie punkty z VBO
|
||||
glEnable(GL_LIGHTING);
|
||||
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
|
||||
// glMaterialfv(GL_FRONT,GL_EMISSION,emm2);
|
||||
pRoot->EndVBO();
|
||||
pRoot->StartVBO();
|
||||
}
|
||||
}
|
||||
}
|
||||
/*Ra: tu coś jest bez sensu...
|
||||
else
|
||||
{
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
// if (eType==smt_FreeSpotLight)
|
||||
// {
|
||||
// if (iFarAttenDecay==0)
|
||||
// glColor3f(Diffuse[0],Diffuse[1],Diffuse[2]);
|
||||
// }
|
||||
// else
|
||||
//TODO: poprawic zeby dzialalo
|
||||
glColor3f(f4Diffuse[0],f4Diffuse[1],f4Diffuse[2]);
|
||||
glColorMaterial(GL_FRONT,GL_EMISSION);
|
||||
glDisable(GL_LIGHTING); //Tolaris-030603: bo mu punkty
|
||||
swiecace sie blendowaly
|
||||
//glBegin(GL_POINTS);
|
||||
glDrawArrays(GL_POINTS,iVboPtr,iNumVerts); //narysuj
|
||||
wierzchołek z VBO
|
||||
// glVertex3f(0,0,0);
|
||||
//glEnd();
|
||||
glEnable(GL_LIGHTING);
|
||||
glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
|
||||
glMaterialfv(GL_FRONT,GL_EMISSION,emm2);
|
||||
//glEndList();
|
||||
}
|
||||
*/
|
||||
if (Child != NULL)
|
||||
if (iAlpha & iFlags & 0x001F0000)
|
||||
Child->RenderVBO();
|
||||
if (iFlags & 0xC000)
|
||||
glPopMatrix();
|
||||
}
|
||||
if (b_Anim < at_SecondsJump)
|
||||
b_Anim = at_None; // wyłączenie animacji dla kolejnego użycia submodelu
|
||||
if (Next)
|
||||
if (iAlpha & iFlags & 0x1F000000)
|
||||
Next->RenderVBO(); // dalsze rekurencyjnie
|
||||
}; // RaRender
|
||||
|
||||
void TSubModel::RenderAlphaVBO()
|
||||
{ // renderowanie przezroczystych przez VBO
|
||||
if( ( iVisible )
|
||||
&& ( fSquareDist >= (fSquareMinDist / Global::fDistanceFactor) )
|
||||
&& ( fSquareDist <= (fSquareMaxDist * Global::fDistanceFactor) ) )
|
||||
{
|
||||
if (iFlags & 0xC000)
|
||||
{
|
||||
glPushMatrix(); // zapamiętanie matrycy
|
||||
if (fMatrix)
|
||||
glMultMatrixf(fMatrix->readArray());
|
||||
if (b_aAnim)
|
||||
RaAnimation(b_aAnim);
|
||||
}
|
||||
glColor3fv(f4Diffuse);
|
||||
if (eType < TP_ROTATOR)
|
||||
{ // renderowanie obiektów OpenGL
|
||||
if (iAlpha & iFlags & 0x2F) // rysuj gdy element przezroczysty
|
||||
{
|
||||
if (TextureID < 0) // && (ReplacableSkinId!=0))
|
||||
{ // zmienialne skory
|
||||
GfxRenderer.Bind(ReplacableSkinId[-TextureID]);
|
||||
// TexAlpha=iAlpha&1; //zmiana tylko w przypadku wymienej tekstury
|
||||
}
|
||||
else
|
||||
GfxRenderer.Bind(TextureID); // również 0
|
||||
if (Global::fLuminance < fLight)
|
||||
{
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, f4Diffuse); // zeby swiecilo na kolorowo
|
||||
glDrawArrays(eType, iVboPtr,
|
||||
iNumVerts); // narysuj naraz wszystkie trójkąty z VBO
|
||||
glMaterialfv(GL_FRONT, GL_EMISSION, emm2);
|
||||
}
|
||||
else
|
||||
glDrawArrays(eType, iVboPtr,
|
||||
iNumVerts); // narysuj naraz wszystkie trójkąty z VBO
|
||||
}
|
||||
}
|
||||
else if (eType == TP_FREESPOTLIGHT)
|
||||
{
|
||||
// dorobić aureolę!
|
||||
}
|
||||
if (Child)
|
||||
if (iAlpha & iFlags & 0x002F0000)
|
||||
Child->RenderAlphaVBO();
|
||||
if (iFlags & 0xC000)
|
||||
glPopMatrix();
|
||||
}
|
||||
if (b_aAnim < at_SecondsJump)
|
||||
b_aAnim = at_None; // wyłączenie animacji dla kolejnego użycia submodelu
|
||||
if (Next)
|
||||
if (iAlpha & iFlags & 0x2F000000)
|
||||
Next->RenderAlphaVBO();
|
||||
}; // RaRenderAlpha
|
||||
#endif
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void TSubModel::RaArrayFill(CVertNormTex *Vert)
|
||||
@@ -2212,140 +1797,6 @@ void TModel3d::BreakHierarhy()
|
||||
Error("Not implemented yet :(");
|
||||
};
|
||||
|
||||
#ifdef EU07_USE_OLD_RENDERCODE
|
||||
void TModel3d::Render(double fSquareDistance, texture_manager::size_type *ReplacableSkinId, int iAlpha)
|
||||
{
|
||||
iAlpha ^= 0x0F0F000F; // odwrócenie flag tekstur, aby wyłapać nieprzezroczyste
|
||||
if (iAlpha & iFlags & 0x1F1F001F) // czy w ogóle jest co robić w tym cyklu?
|
||||
{
|
||||
TSubModel::fSquareDist = fSquareDistance; // zmienna globalna!
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha);
|
||||
Root->RenderDL();
|
||||
}
|
||||
};
|
||||
|
||||
void TModel3d::RenderAlpha(double fSquareDistance, texture_manager::size_type *ReplacableSkinId, int iAlpha)
|
||||
{
|
||||
if (iAlpha & iFlags & 0x2F2F002F)
|
||||
{
|
||||
TSubModel::fSquareDist = fSquareDistance; // zmienna globalna!
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha);
|
||||
Root->RenderAlphaDL();
|
||||
}
|
||||
};
|
||||
|
||||
void TModel3d::RaRender(double fSquareDistance, texture_manager::size_type const *ReplacableSkinId, int iAlpha)
|
||||
{ // renderowanie specjalne, np. kabiny
|
||||
iAlpha ^= 0x0F0F000F; // odwrócenie flag tekstur, aby wyłapać nieprzezroczyste
|
||||
if (iAlpha & iFlags & 0x1F1F001F) // czy w ogóle jest co robić w tym cyklu?
|
||||
{
|
||||
TSubModel::fSquareDist = fSquareDistance; // zmienna globalna!
|
||||
if (StartVBO())
|
||||
{ // odwrócenie flag, aby wyłapać nieprzezroczyste
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha);
|
||||
Root->pRoot = this;
|
||||
Root->RenderVBO();
|
||||
EndVBO();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void TModel3d::RaRenderAlpha(double fSquareDistance, texture_manager::size_type const *ReplacableSkinId, int iAlpha)
|
||||
{ // renderowanie specjalne, np. kabiny
|
||||
if (iAlpha & iFlags & 0x2F2F002F) // czy w ogóle jest co robić w tym cyklu?
|
||||
{
|
||||
TSubModel::fSquareDist = fSquareDistance; // zmienna globalna!
|
||||
if (StartVBO())
|
||||
{
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha);
|
||||
Root->RenderAlphaVBO();
|
||||
EndVBO();
|
||||
}
|
||||
}
|
||||
};
|
||||
#endif
|
||||
//-----------------------------------------------------------------------------
|
||||
// 2011-03-16 cztery nowe funkcje renderowania z możliwością pochylania obiektów
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifdef EU07_USE_OLD_RENDERCODE
|
||||
void TModel3d::Render(vector3 *vPosition, vector3 *vAngle, texture_manager::size_type *ReplacableSkinId, int iAlpha)
|
||||
{ // nieprzezroczyste, Display List
|
||||
glPushMatrix();
|
||||
glTranslated(vPosition->x, vPosition->y, vPosition->z);
|
||||
if (vAngle->y != 0.0)
|
||||
glRotated(vAngle->y, 0.0, 1.0, 0.0);
|
||||
if (vAngle->x != 0.0)
|
||||
glRotated(vAngle->x, 1.0, 0.0, 0.0);
|
||||
if (vAngle->z != 0.0)
|
||||
glRotated(vAngle->z, 0.0, 0.0, 1.0);
|
||||
TSubModel::fSquareDist =
|
||||
SquareMagnitude(*vPosition - Global::GetCameraPosition()); // zmienna globalna!
|
||||
// odwrócenie flag, aby wyłapać nieprzezroczyste
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha ^ 0x0F0F000F);
|
||||
Root->RenderDL();
|
||||
glPopMatrix();
|
||||
};
|
||||
void TModel3d::RenderAlpha(vector3 *vPosition, vector3 *vAngle, texture_manager::size_type *ReplacableSkinId,
|
||||
int iAlpha)
|
||||
{ // przezroczyste, Display List
|
||||
glPushMatrix();
|
||||
glTranslated(vPosition->x, vPosition->y, vPosition->z);
|
||||
if (vAngle->y != 0.0)
|
||||
glRotated(vAngle->y, 0.0, 1.0, 0.0);
|
||||
if (vAngle->x != 0.0)
|
||||
glRotated(vAngle->x, 1.0, 0.0, 0.0);
|
||||
if (vAngle->z != 0.0)
|
||||
glRotated(vAngle->z, 0.0, 0.0, 1.0);
|
||||
TSubModel::fSquareDist =
|
||||
SquareMagnitude(*vPosition - Global::GetCameraPosition()); // zmienna globalna!
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha);
|
||||
Root->RenderAlphaDL();
|
||||
glPopMatrix();
|
||||
};
|
||||
|
||||
void TModel3d::RaRender(vector3 *vPosition, vector3 *vAngle, texture_manager::size_type const *ReplacableSkinId, int iAlpha)
|
||||
{ // nieprzezroczyste, VBO
|
||||
glPushMatrix();
|
||||
glTranslated(vPosition->x, vPosition->y, vPosition->z);
|
||||
if (vAngle->y != 0.0)
|
||||
glRotated(vAngle->y, 0.0, 1.0, 0.0);
|
||||
if (vAngle->x != 0.0)
|
||||
glRotated(vAngle->x, 1.0, 0.0, 0.0);
|
||||
if (vAngle->z != 0.0)
|
||||
glRotated(vAngle->z, 0.0, 0.0, 1.0);
|
||||
TSubModel::fSquareDist =
|
||||
SquareMagnitude(*vPosition - Global::GetCameraPosition()); // zmienna globalna!
|
||||
if (StartVBO())
|
||||
{ // odwrócenie flag, aby wyłapać nieprzezroczyste
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha ^ 0x0F0F000F);
|
||||
Root->RenderVBO();
|
||||
EndVBO();
|
||||
}
|
||||
glPopMatrix();
|
||||
};
|
||||
void TModel3d::RaRenderAlpha(vector3 *vPosition, vector3 *vAngle, texture_manager::size_type const *ReplacableSkinId,
|
||||
int iAlpha)
|
||||
{ // przezroczyste, VBO
|
||||
glPushMatrix();
|
||||
glTranslated(vPosition->x, vPosition->y, vPosition->z);
|
||||
if (vAngle->y != 0.0)
|
||||
glRotated(vAngle->y, 0.0, 1.0, 0.0);
|
||||
if (vAngle->x != 0.0)
|
||||
glRotated(vAngle->x, 1.0, 0.0, 0.0);
|
||||
if (vAngle->z != 0.0)
|
||||
glRotated(vAngle->z, 0.0, 0.0, 1.0);
|
||||
TSubModel::fSquareDist =
|
||||
SquareMagnitude(*vPosition - Global::GetCameraPosition()); // zmienna globalna!
|
||||
if (StartVBO())
|
||||
{
|
||||
Root->ReplacableSet(ReplacableSkinId, iAlpha);
|
||||
Root->RenderAlphaVBO();
|
||||
EndVBO();
|
||||
}
|
||||
glPopMatrix();
|
||||
};
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// 2012-02 funkcje do tworzenia terenu z E3D
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user