Imagination PowerVR SDK Blog

Losing objects after rendering text


#1

Hello,



I am trying to use the CPVRTPrint3D class according to the SDK example but every time I render(flush) the pending text, all other objects I have rendered disappear from screen. Could anyone tell me what i might be doing wrong?

Here is part of my code:



Initview:







bool bRotate = PVRShellGet(prefWidth)/PVRShellGet(prefHeight);



if(m_Print3D.SetTextures(0, PVRShellGet(prefWidth), PVRShellGet(prefHeight), bRotate) != PVR_SUCCESS)

{

PVRShellSet(prefExitMessage, “ERROR: Cannot initialise Print3Dn”);

return false;

}





ReleaseView:







m_Print3D.ReleaseTextures();







Renderscene:





glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);



else if (pressed==2)

{

Pad();

}

else

{

Main_Menu();

}





Pad():





int tnLocation = glGetUniformLocation(m_uiProgramObject, “myPMVMatrix”);

glUniformMatrix4fv( tnLocation, 1, GL_FALSE, aPMVMatrix);

tnLocation = glGetUniformLocation(m_uiProgramObject, “myModelViewIT”);

glUniformMatrix3fv( tnLocation, 1, GL_FALSE, aModelViewIT);

tnLocation = glGetUniformLocation(m_uiProgramObject, “myLightDirection”);

glUniform3f( tnLocation, 0, 0, 1);

glBindBuffer(GL_ARRAY_BUFFER, m_ui32Vbo[9]);

glEnableVertexAttribArray(VERTEX_ARRAY);

glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, GL_FALSE, m_ui32VertexStride, 0);

glBindTexture( GL_TEXTURE_2D, m_uiTexture[9] );

glEnableVertexAttribArray(TEXCOORD_ARRAY);

glVertexAttribPointer(TEXCOORD_ARRAY, 2, GL_FLOAT, GL_FALSE, m_ui32VertexStride, (void*) (3 * sizeof(GLfloat)));

glEnableVertexAttribArray(NORMAL_ARRAY);

glVertexAttribPointer(NORMAL_ARRAY, 3, GL_FLOAT, GL_FALSE, m_ui32VertexStride, (void*) (5 * sizeof(GLfloat)) );

glDrawArrays(GL_TRIANGLES, 0, 6);

glBindBuffer(GL_ARRAY_BUFFER, 0);



m_Print3D.Print3D(50.0f, 50.0f, 1.0f, 0xFF30AA80, “Hello world”);



m_Print3D.Flush();



if (NULL != (vec2PointerLocation = (float *)PVRShellGet(prefPointerLocation)))

{

x = vec2PointerLocation[0];

y = vec2PointerLocation[1];



if(0 != PVRShellGet(prefButtonState) && x<0.25 && y>0.75 )

{

pressed=0;

}

}







Thanks in advance



Giorgos


#2

Hi Giorgos,



Does Print3D render correctly in this case? It could be that Print3D is setting a render state that your render code does not expect and reset correctly before you re-render.


#3

Hello



did you set a default texture as well ?

what happend if you flush at the end of the rendering :slight_smile: ?



daavid


#4

hello,



I guess Arron is right…I moved the “glUseProgram” to the beginning of my RenderScence function to reuse my shaders and it works fine…



Thanks a lot for your help



Giorgos