tenebrae2/nvparse/rc1.0_combiners.cpp

91 lines
1.8 KiB
C++

#include "../glNV.h"
#include "rc1.0_combiners.h"
#include "nvparse_errors.h"
#include "nvparse_externs.h"
void CombinersStruct::Validate()
{
if (2 == numConsts &&
cc[0].reg.bits.name == cc[1].reg.bits.name)
errors.set("global constant set twice");
generals.Validate(numConsts, &cc[0]);
final.Validate();
}
void CombinersStruct::Invoke()
{
for (int i = 0; i < numConsts; i++)
qglCombinerParameterfvNV(cc[i].reg.bits.name, &(cc[i].v[0]));
generals.Invoke();
final.Invoke();
}
bool is_rc10(const char * s)
{
return ! strncmp(s, "!!RC1.0", 7);
}
bool rc10_init_more()
{
bool rcinit = false;
if(rcinit == false)
{
//FIXME; check extension availabe
rcinit = true;
/*
if(! glh_init_extensions("GL_NV_register_combiners"))
{
errors.set("unable to initialize GL_NV_register_combiners\n");
return false;
}
else
{
rcinit = true;
}
*/
}
bool rc2init = false;
if(rc2init == false)
{
//glh_init_extensions("GL_NV_register_combiners2");
// Don't fail if this doesn't initialize.
// We will run even if it doesn't exist.
rc2init = true;
}
errors.reset();
line_number = 1;
return true;
}
/*
else if(!strncmp(instring, "!!RC1.0", 7))
{
if(glCombinerParameterfvNV == 0)
{
if(! glh_init_extensions("GL_NV_register_combiners"))
{
errors.set("unable to initialize GL_NV_register_combiners\n");
free(instring);
return;
}
}
if(glCombinerStageParameterfvNV == 0)
{
glh_init_extensions("GL_NV_register_combiners2");
// Don't fail if this doesn't initialize.
// We will run even if it doesn't exist.
}
errors.reset();
line_number = 1;
rc10_init(instring+7);
rc10_parse();
}
*/