void SkeletalMeshGraphicComponent::unitDraw(RenderParameter &param)//Actor *actor,Engine::Scene* scene)
{

    glDebug();
    TransformComponent* trans = 0;
    if(m_pOwner)trans = m_pOwner->getComponent<TransformComponent>(ComponentId::Transform);

    //glPushMatrix();
    glColor3f(0, 1, 0);


    Shader* currentShader = 0;
    if(param.flag & RenderFlag::Default)currentShader = shader;
    else if(param.flag & RenderFlag::Shadow)currentShader = shader_shadow;


    if(currentShader) {
        currentShader->Use();
        glDebug();
        GLuint p = currentShader->getProgramId();
        int loc;
        glDebug();
        if(trans) {
            loc=currentShader->getUniformLocation("MVM");
            if(loc>=0)glUniformMatrix4fv(loc, 1, 0, &trans->getMatrix()[0][0]);

        }
        glDebug(param.flag);
        loc=currentShader->getUniformLocation("textureMatrix");
        if(param.flag & RenderFlag::Default)if(loc>-1)glUniformMatrix2fv(loc, 1, 0, &textureMatrix[0][0]);



        glDebug(param.flag);
        mesh->updateUniform(currentShader->getProgramId());
        mesh->draw(materials, currentShader,param.flag);
        glDebug();

    }


    //glPopMatrix();
}
Example #2
0
void initModels()
{
    EntitySystem::Init();

	rot = 0;
	if (render1Enabled) {
		float x_pos = 0, y_pos = 0, z_pos = 0;
        Entity* e = EntitySystem::CreateEntity();
		TransformComponent* transform = TransformSystem::CreateComponent()
			->translate(x_pos, y_pos, z_pos)
			->rotate(0, 0, 0)
			->uniform_scale(0.1f);
		e->add_component(transform);

		render_model1 = graphics::RenderOperationManager::GetDrawModelOp(render_1_model);

		render_model1->ModelMatrix = transform->getMatrix();
		render_model1->_material->
                _primary_color(graphics::Color4f(1, 0, 0, 1))->
                _is_lit(false)->
                _diffuse_texture(graphics::TextureManager::GetTexture("resources/enemy_text02.bmp"));
	}

	if (render2Enabled) {
        float x_pos = 0, y_pos = 0, z_pos = 0, line_thickness = 1;
		int rows = 20, cols = 20, spacing = 20;
		graphics::Color4f color(.5,.5, .5, 1);
        render_model2 = new graphics::RenderOperation();
        render_model2->Operation_Type = graphics::RenderOperation::DRAW_MODEL;
        render_model2->_material
                ->_is_lit(false)
                ->_is_colored(true);
        render_model2->VertexBuffer = graphics::VertexBufferManager::GetBuffer(USE_COLOR | USE_TEXTURE | USE_NORMAL, (rows + cols + 2) * 8, (rows + cols + 2) * 36);
		graphics::Primitives::CreateGrid(render_model2->VertexBuffer, rows, cols, spacing, spacing, line_thickness, &color);
        
        graphics::Transform transform;
        transform.translate(x_pos, y_pos, z_pos);
		render_model2->ModelMatrix = transform.getMatrix();
	}

	//terrain.CreateGrid(128, 128, 500);
}