create "obj" and "obj_tex" shader programs
This commit is contained in:
parent
3b940aa140
commit
96e4a66c2c
@ -20,6 +20,8 @@
|
|||||||
#include "AV.h"
|
#include "AV.h"
|
||||||
#include "PhyObj/PhyObj.h"
|
#include "PhyObj/PhyObj.h"
|
||||||
#include "sdl_keymap.h"
|
#include "sdl_keymap.h"
|
||||||
|
#include "cfs.h"
|
||||||
|
#include "glslUtil/glslUtil.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -160,6 +162,44 @@ Engine::Engine(const string & path, AV & av)
|
|||||||
m_luaState = lua_open();
|
m_luaState = lua_open();
|
||||||
|
|
||||||
registerLibraries();
|
registerLibraries();
|
||||||
|
|
||||||
|
const char *obj_v_src = (const char *) getFile("shaders/obj.vp", NULL);
|
||||||
|
const char *obj_f_src = (const char *) getFile("shaders/obj/fp", NULL);
|
||||||
|
const static guAttribBinding obj_bindings[] = {
|
||||||
|
{ATTRIBUTE_OBJ_POS, "pos"},
|
||||||
|
{ATTRIBUTE_OBJ_NORMAL, "normal"},
|
||||||
|
{0, NULL}
|
||||||
|
};
|
||||||
|
if (obj_v_src != NULL && obj_f_src != NULL)
|
||||||
|
{
|
||||||
|
m_programs[PROG_OBJ] = guMakeProgramFromSource(obj_v_src, obj_f_src,
|
||||||
|
obj_bindings);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_programs[PROG_OBJ] = 0;
|
||||||
|
cerr << "Error: Could not obtain 'obj' shader sources" << endl;
|
||||||
|
}
|
||||||
|
const char *obj_tex_v_src =
|
||||||
|
(const char *) getFile("shaders/obj_tex.vp", NULL);
|
||||||
|
const char *obj_tex_f_src =
|
||||||
|
(const char *) getFile("shaders/obj_tex.fp", NULL);
|
||||||
|
const static guAttribBinding obj_tex_bindings[] = {
|
||||||
|
{ATTRIBUTE_OBJ_TEX_POS, "pos"},
|
||||||
|
{ATTRIBUTE_OBJ_TEX_NORMAL, "normal"},
|
||||||
|
{ATTRIBUTE_OBJ_TEX_TEX_COORD, "tex_coord"},
|
||||||
|
{0, NULL}
|
||||||
|
};
|
||||||
|
if (obj_tex_v_src != NULL && obj_tex_f_src != NULL)
|
||||||
|
{
|
||||||
|
m_programs[PROG_OBJ_TEX] = guMakeProgramFromSource(obj_tex_v_src,
|
||||||
|
obj_tex_f_src, obj_tex_bindings);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_programs[PROG_OBJ_TEX] = 0;
|
||||||
|
cerr << "Error: Could not obtain 'obj_tex' shader sources" << endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Engine::~Engine()
|
Engine::~Engine()
|
||||||
|
33
src/Engine.h
33
src/Engine.h
@ -365,6 +365,39 @@ class Engine
|
|||||||
bool m_event_mousebutton_down_present;
|
bool m_event_mousebutton_down_present;
|
||||||
bool m_event_mousebutton_up_present;
|
bool m_event_mousebutton_up_present;
|
||||||
bool m_event_mouse_motion_present;
|
bool m_event_mouse_motion_present;
|
||||||
|
|
||||||
|
enum { PROG_OBJ, PROG_OBJ_TEX, PROG_COUNT };
|
||||||
|
GLuint m_programs[PROG_COUNT];
|
||||||
|
enum {
|
||||||
|
UNIFORM_OBJ_PROJECTION,
|
||||||
|
UNIFORM_OBJ_MODELVIEW,
|
||||||
|
UNIFORM_OBJ_AMBIENT,
|
||||||
|
UNIFORM_OBJ_DIFFUSE,
|
||||||
|
UNIFORM_OBJ_SPECULAR,
|
||||||
|
UNIFORM_OBJ_SHININESS,
|
||||||
|
UNIFORM_OBJ_COUNT
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
ATTRIBUTE_OBJ_POS,
|
||||||
|
ATTRIBUTE_OBJ_NORMAL,
|
||||||
|
ATTRIBUTE_OBJ_COUNT
|
||||||
|
};
|
||||||
|
GLint m_uniforms_obj[UNIFORM_OBJ_COUNT];
|
||||||
|
enum {
|
||||||
|
UNIFORM_OBJ_TEX_PROJECTION,
|
||||||
|
UNIFORM_OBJ_TEX_MODELVIEW,
|
||||||
|
UNIFORM_OBJ_TEX_AMBIENT,
|
||||||
|
UNIFORM_OBJ_TEX_SPECULAR,
|
||||||
|
UNIFORM_OBJ_TEX_SHININESS,
|
||||||
|
UNIFORM_OBJ_TEX_COUNT
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
ATTRIBUTE_OBJ_TEX_POS,
|
||||||
|
ATTRIBUTE_OBJ_TEX_NORMAL,
|
||||||
|
ATTRIBUTE_OBJ_TEX_TEX_COORD,
|
||||||
|
ATTRIBUTE_OBJ_TEX_COUNT
|
||||||
|
};
|
||||||
|
GLint m_uniforms_obj_tex[UNIFORM_OBJ_TEX_COUNT];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern Engine * g_engine;
|
extern Engine * g_engine;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user