|
|
@@ -135,6 +135,7 @@ void Scene::Render() // XXX: rename to Blit() |
|
|
|
{ |
|
|
|
if (!stdshader) |
|
|
|
{ |
|
|
|
#if !defined __CELLOS_LV2__ |
|
|
|
stdshader = Shader::Create( |
|
|
|
"#version 130\n" |
|
|
|
"\n" |
|
|
@@ -210,6 +211,27 @@ void Scene::Render() // XXX: rename to Blit() |
|
|
|
#endif |
|
|
|
" gl_FragColor = col;\n" |
|
|
|
"}\n"); |
|
|
|
#else |
|
|
|
stdshader = Shader::Create( |
|
|
|
"void main(float4 in_Position : POSITION," |
|
|
|
" float2 in_TexCoord : TEXCOORD0," |
|
|
|
" uniform float4x4 proj_matrix," |
|
|
|
" uniform float4x4 view_matrix," |
|
|
|
" uniform float4x4 model_matrix," |
|
|
|
" out float2 out_TexCoord : TEXCOORD0," |
|
|
|
" out float4 out_Position : POSITION)" |
|
|
|
"{" |
|
|
|
" out_Position = mul(proj_matrix, mul(view_matrix, mul(model_matrix, in_Position)));" |
|
|
|
" out_TexCoord = in_TexCoord;" |
|
|
|
"}", |
|
|
|
|
|
|
|
"void main(float2 in_TexCoord : TEXCOORD0," |
|
|
|
" uniform sampler2D tex," |
|
|
|
" out float4 out_FragColor : COLOR)" |
|
|
|
"{" |
|
|
|
" out_FragColor = tex2D(tex, in_TexCoord);" |
|
|
|
"}"); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
#if 0 |
|
|
@@ -237,12 +259,14 @@ void Scene::Render() // XXX: rename to Blit() |
|
|
|
// XXX: end of debug stuff |
|
|
|
|
|
|
|
GLuint uni_mat, uni_tex, attr_pos, attr_tex; |
|
|
|
#if !defined __CELLOS_LV2__ |
|
|
|
attr_pos = stdshader->GetAttribLocation("in_Position"); |
|
|
|
attr_tex = stdshader->GetAttribLocation("in_TexCoord"); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if !defined __CELLOS_LV2__ // Use cgGetNamedParameter etc. |
|
|
|
stdshader->Bind(); |
|
|
|
|
|
|
|
#if !defined __CELLOS_LV2__ |
|
|
|
uni_mat = stdshader->GetUniformLocation("proj_matrix"); |
|
|
|
glUniformMatrix4fv(uni_mat, 1, GL_FALSE, &Video::GetProjMatrix()[0][0]); |
|
|
|
uni_mat = stdshader->GetUniformLocation("view_matrix"); |
|
|
@@ -252,6 +276,17 @@ void Scene::Render() // XXX: rename to Blit() |
|
|
|
|
|
|
|
uni_tex = stdshader->GetUniformLocation("in_Texture"); |
|
|
|
glUniform1i(uni_tex, 0); |
|
|
|
#else |
|
|
|
uni_mat = stdshader->GetUniformLocation("proj_matrix"); |
|
|
|
cgGLSetMatrixParameterfc((CGparameter)(intptr_t)uni_mat, &Video::GetProjMatrix()[0][0]); |
|
|
|
uni_mat = stdshader->GetUniformLocation("view_matrix"); |
|
|
|
cgGLSetMatrixParameterfc((CGparameter)(intptr_t)uni_mat, &Video::GetViewMatrix()[0][0]); |
|
|
|
uni_mat = stdshader->GetUniformLocation("model_matrix"); |
|
|
|
cgGLSetMatrixParameterfc((CGparameter)(intptr_t)uni_mat, &data->model_matrix[0][0]); |
|
|
|
|
|
|
|
// WTF? this doesn't exist |
|
|
|
//uni_tex = stdshader->GetUniformLocation("in_Texture"); |
|
|
|
//cgGLSetParameter1i((CGparameter)(intptr_t)uni_tex, 0); |
|
|
|
#endif |
|
|
|
|
|
|
|
glEnable(GL_TEXTURE_2D); |
|
|
@@ -312,6 +347,12 @@ void Scene::Render() // XXX: rename to Blit() |
|
|
|
glBufferData(GL_ARRAY_BUFFER, 12 * (n - i) * sizeof(GLfloat), |
|
|
|
texture, GL_STATIC_DRAW); |
|
|
|
glVertexAttribPointer(attr_tex, 2, GL_FLOAT, GL_FALSE, 0, 0); |
|
|
|
#else |
|
|
|
glEnableClientState(GL_VERTEX_ARRAY); |
|
|
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
|
|
|
|
|
|
|
glVertexPointer(3, GL_FLOAT, 0, vertex); |
|
|
|
glTexCoordPointer(2, GL_FLOAT, 0, texture); |
|
|
|
#endif |
|
|
|
|
|
|
|
/* Draw arrays */ |
|
|
@@ -323,6 +364,9 @@ void Scene::Render() // XXX: rename to Blit() |
|
|
|
#if !defined __CELLOS_LV2__ // Use cgGLEnableClientState etc. |
|
|
|
glDisableVertexAttribArray(attr_pos); |
|
|
|
glDisableVertexAttribArray(attr_tex); |
|
|
|
#else |
|
|
|
glDisableClientState(GL_VERTEX_ARRAY); |
|
|
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
|
|
|
#endif |
|
|
|
|
|
|
|
free(vertex); |
|
|
|