/**
     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;
  }
Exemple #2
0
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
}