1
0
forked from 0ad/0ad

*** empty log message ***

This was SVN commit r1297.
This commit is contained in:
Calefaction 2004-11-08 22:10:06 +00:00
parent 82108a30c9
commit 11900f8b38
2 changed files with 2 additions and 79 deletions

View File

@ -17,41 +17,21 @@ CVertexProgram::CVertexProgram(const char *file)
CVertexProgram::~CVertexProgram()
{
#ifdef BUILD_CG
if(m_Program)
cgDestroyProgram(m_Program);
#endif
}
bool CVertexProgram::IsValid()
{
#ifdef BUILD_CG
return (m_Program != NULL);
#else
return false;
#endif
}
void CVertexProgram::Bind()
{
#ifdef BUILD_CG
if(!IsValid())
return;
EnumParameters(CG_GLOBAL);
EnumParameters(CG_PROGRAM);
if(!cgGLIsProgramLoaded(m_Program))
cgGLLoadProgram(m_Program);
cgGLBindProgram(m_Program);
#endif
}
void CVertexProgram::Load(const char *file)
{
#ifdef BUILD_CG
m_Program = NULL;
/* m_Program = NULL;
if(!file || !vfs_exists(file) || g_ProgramManager.GetVPProfile() == CG_PROFILE_UNKNOWN)
return;
@ -79,49 +59,6 @@ void CVertexProgram::Load(const char *file)
{
LOG(ERROR, LOG_CATEGORY, "CVertexShader::LoadShader: Could not compile Cg shader: %s", cgGetErrorString(cgGetError()));
return;
}
}*/
#endif
}
#ifdef BUILD_CG
void CVertexProgram::EnumParameters(CGenum ns)
{
CGparameter param = cgGetFirstParameter(m_Program, ns);
while(param)
{
PushParameter(param);
param = cgGetNextParameter(param);
}
}
void CVertexProgram::PushParameter(CGparameter param)
{
assert(param);
std::string name = cgGetParameterName(param);
if(name == "ModelViewProj")
cgGLSetStateMatrixParameter(param, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);
else if(name == "ModelView")
cgGLSetStateMatrixParameter(param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);
else if(name == "Projection")
cgGLSetStateMatrixParameter(param, CG_GL_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);
else if(name == "Texture")
cgGLSetStateMatrixParameter(param, CG_GL_TEXTURE_MATRIX, CG_GL_MATRIX_IDENTITY);
else if(name == "SunDir")
{
cgGLSetParameterPointer(
param, sizeof(CVector3D), GL_FLOAT, sizeof(float), &g_Renderer.GetLightEnv().m_SunDir.X
);
}
else if(name == "SunColor")
{
cgGLSetParameterPointer(
param, sizeof(CVector3D), GL_FLOAT, sizeof(float), &g_Renderer.GetLightEnv().m_SunColor.X
);
}
else
LOG(WARNING, LOG_CATEGORY, "CVertexShader::LoadShader: Unknown parameter name: %s", name.c_str());
}
#endif

View File

@ -1,16 +1,7 @@
#ifndef __H_VERTEXPROGRAM_H__
#define __H_VERTEXPROGRAM_H__
#ifdef BUILD_CG
#pragma comment(lib, "cg.lib")
#pragma comment(lib, "cgGL.lib")
#include "ogl.h"
#include "Cg/Cg.h"
#include "Cg/cgGL.h"
#endif
class CProgramManager;
@ -25,11 +16,6 @@ public:
private:
void Bind();
void Load(const char *file);
#ifdef BUILD_CG
void EnumParameters(CGenum ns);
void PushParameter(CGparameter param);
CGprogram m_Program;
#endif
};
#endif