06-13-2014 05:46 AM
06-13-2014 07:30 AM
06-13-2014 07:57 AM
Matrix4f OvrSceneView::DrawEyeView(const int eye, const float fovDegrees) const
{
const Matrix4f mvpMatrix = MvpForEye( eye, fovDegrees );
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW); // swapped due to axis interchange in timewarp for efficient CPU mapping
const DrawSurfaceList & surfs = BuildDrawSurfaceList(RenderModels,
mvpMatrix.Transposed());
(void)RenderSurfaceList(surfs);
DebugLines.Render( mvpMatrix.Transposed() );
return mvpMatrix;
}
Matrix4f OvrSceneView::DrawEyeView(const int eye, const float fovDegrees) const
{
const Matrix4f mvpMatrix = MvpForEye( eye, fovDegrees );
glEnable(GL_DEPTH_TEST);
glBindVertexArray(myvertices);
glDrawArrays(GL_TRIANGLES, 0, 3);
return mvpMatrix;
}
06-13-2014 07:59 AM
06-13-2014 10:41 AM
06-19-2014 09:01 AM
Matrix4f OvrApp::DrawEyeView(const int eye, const float fovDegrees)
{
const Matrix4f mvpMatrix = view->MvpForEye( eye, fovDegrees );
LOG ("DrawEyeView called");
dev->UseVertexFormat(-1, -1); // invalidate current
dev->UseVertexFormat(0, 0);
dev->UpdateWvpMatrix((Matrix4f *) &mvpMatrix);
dev->DrawBufferContents( &my_buffer, GL_TRIANGLES,0,0 );
return mvpMatrix;
}
AddColorVertex(&my_buffer,
-0.1f, -0.1f, 5.5f,
0xffffffff,
0.0f,0.0f,
0.0f,0.0f );
AddColorVertex(&my_buffer,
0.1f, -0.1f, 5.5f,
0xffffffff,
0.0f,0.0f,
0.0f,0.0f );
AddColorVertex(&my_buffer,
0.0f, 0.1f, 5.5f,
0xffffffff,
0.0f,0.0f,
0.0f,0.0f );
static char *vshader_basecol =
"\n"
" attribute vec3 Position; \n"
" attribute vec4 Color; \n"
" attribute vec2 UV; \n"
"\n"
" uniform mat4 m_WorldViewProj;\n"
"\n"
" varying vec2 oTexCoord;\n"
" varying vec4 thecolor; \n"
"\n"
" uniform vec4 vtint;\n"
"\n"
"void main()\n"
"{\n"
" gl_Position = vec4(Position,1.0f);\n" // m_WorldViewProj *
" thecolor = vec4(1.0f, 1.0f, 1.0f, 1.0f); " //Color; " // * vtint;\n"
" oTexCoord = UV;\n"
"}\n"
"";
static char *pshader_basecol =
"\n"
" varying vec4 thecolor; \n"
"\n"
"\n"
"void main()\n"
"{\n"
" gl_FragColor = thecolor; \n"
"}\n"
"";
int NeonDeviceVR::DrawBufferContents (GenericVertexBuffer *vbuf, GLenum prim, int numvertices, int dataindex )
{
int stride;
int count;
count = numvertices;
if (!count) count = vbuf->vsize;
// bind the buffer we are using
glBindBuffer(GL_ARRAY_BUFFER, vbuf->buffer_id);
// check if we may need to update the vertex format
if ( vertex_format_to_use != current_vertex_format )
{
current_vertex_format = vertex_format_to_use;
switch (current_vertex_format)
{
case COLORVERTEX_BASIC:
I_LOG("Bind to colorvertex basic");
stride = sizeof (ColorVertex);
glEnableVertexAttribArray(ColorVertexElements::kVertexPosition);
glEnableVertexAttribArray(ColorVertexElements::kVertexColor);
glEnableVertexAttribArray(ColorVertexElements::kVertexUv);
glVertexAttribPointer(ColorVertexElements::kVertexPosition, 3, GL_FLOAT, GL_FALSE, stride, BUFFER_OFFSET(0) );
glVertexAttribPointer(ColorVertexElements::kVertexColor, 4, GL_UNSIGNED_BYTE, GL_FALSE, stride, BUFFER_OFFSET(12) );
glVertexAttribPointer(ColorVertexElements::kVertexUv, 2, GL_UNSIGNED_SHORT, GL_FALSE, stride, BUFFER_OFFSET(16) );
break;
}
}
// now let's see the program
if ( current_shader_program != shader_program_to_use )
{
current_shader_program = shader_program_to_use;
glUseProgram(MyShaderPrograms[shader_program_to_use].Program);
I_LOG("Using program %d",MyShaderPrograms[shader_program_to_use].Program);
// we changed the shader, better to re-update the vars
UpdateShaderVars(shader_program_to_use);
}
glBufferSubData(GL_ARRAY_BUFFER, dataindex, vbuf->size, vbuf->vptr.generic_ptr_banana );
I_LOG ("draw count %d",count);
// now we can draw
glDrawArrays (prim, dataindex, count );
// finally unbind the buffer
glBindBuffer(GL_ARRAY_BUFFER, 0);
return 0;
}
}
06-19-2014 09:40 AM
glClearColor ( 0.0f, 0.0f, 0.0f, 1.0f ); //rgba, clear solid black
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
06-19-2014 10:59 AM
const Matrix4f mvpMatrix = view->MvpForEye( eye, fovDegrees );
glUniformMatrix4fv(MyShaderPrograms[program].UniformsLoc[0] , 1, GL_TRUE, the_WvpMatrix.M[0] ); // TRUE per TRANSPOSE
" gl_Position = m_WorldViewProj * vec4(Position,1.0f);\n"
06-19-2014 11:46 AM
OvrSceneView::Frame
OvrApp::Frame(const VrFrame vrFrame)
06-19-2014 01:43 PM