/** Set object state. @param state_new new object state @return old object state */ state_t setState(state_t state_new) { state_t state_old = getState(); if(state_new == state_old) return state_old; switch(state_old) { case STATE_UNUSED: { registerObject(); setState(state_new); break; } case STATE_GRAPHICS_BOUND: { unbindObject(); setState(state_new); break; } case STATE_INACTIVE: { switch(state_new) { case STATE_UNUSED: unregisterObject(); break; case STATE_GRAPHICS_BOUND: bindObject(); break; case STATE_CUDA_MAPPED: mapObject(); break; case STATE_INACTIVE: // avoid warning message break; } break; } case STATE_CUDA_MAPPED: { unmapObject(); setState(state_new); } } return state_old; }
void GL42Renderer::drawObject(RenderObject *object) { bindObject(object); ffmod += 0.05f; //object->rotate(glm::vec3(1, 1, 0)); //object->translate(glm::vec3(0.01f, 0, 0)); //object->scale(glm::vec3(1.0f, 1.0f, 1.0f)); int projectionMatrixLocation = glGetUniformLocation(shaderProgram->getId(), "projectionMatrix"); int viewMatrixLocation = glGetUniformLocation(shaderProgram->getId(), "viewMatrix"); int modelMatrixLocation = glGetUniformLocation(shaderProgram->getId(), "modelMatrix"); glUniformMatrix4fv(projectionMatrixLocation, 1, GL_FALSE, &projectionMatrix[0][0]); glUniformMatrix4fv(viewMatrixLocation, 1, GL_FALSE, &viewMatrix[0][0]); glUniformMatrix4fv(modelMatrixLocation, 1, GL_FALSE, &object->getModelMatrix()[0][0]); glBindVertexArray(vaoID[0]); glDrawArrays(object->drawMode(), 0, object->verticesCount()); glBindVertexArray(0); // Unbind our Vertex Array Object }