Example #1
0
void TextureDrawHelperDraw(
	TEXTURE_DRAW_HELPER* helper,
	float* rect,
	const float* position,
	GLuint texture_name
)
{
	float model_view[16] = {1, 0, 0, position[0], 0, 1, 0, position[1], 0, 0, 1, position[2], 0, 0, 0, 1};
	float projection[16] = IDENTITY_MATRIX;

	if(texture_name == 0)
	{
		return;
	}

	glDisable(GL_DEPTH_TEST);
	TextureDrawHelperUpdateVertexBuffer(helper, rect);
	Ortho(projection, 0, (float)helper->width, 0, (float)helper->height, -1.0f, 1.0f);
	ShaderProgramBind(&helper->program.base_data);
	glActiveTexture(GL_TEXTURE0);
	glBindTexture(GL_TEXTURE_2D, texture_name);
	MulMatrix4x4(projection, model_view, projection);
	//MulMatrix4x4(model_view, projection, projection);
	TextureDrawHelperProgramSetUniformValues(&helper->program, projection, texture_name);
	TextureDrawHelperBindVertexBundle(helper, TRUE);
	glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
	TextureDrawHelperUnbindVertexBundle(helper, TRUE);
	ShaderProgramUnbind(&helper->program.base_data);
	glBindTexture(GL_TEXTURE_2D, 0);
	glEnable(GL_DEPTH_TEST);
}
Example #2
0
// инициализаця OpenGL
bool GLWindowInit(const GLWindow *window)
{
	ASSERT(window);

	// устанавливаем вьюпорт на все окно
	glViewport(0, 0, window->width, window->height);

	// параметры OpenGL
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
	glClearDepth(1.0f);
	glEnable(GL_DEPTH_TEST);

	// создадим и загрузим шейдерную программу
	if ((shaderProgram = ShaderProgramCreateFromMemory(vertexShader, fragmentShader)) == 0)
		return false;

	// собираем созданную и загруженную шейдерную программу
	if (!ShaderProgramLink(shaderProgram))
		return false;

	// сделаем шейдерную программу активной
	ShaderProgramBind(shaderProgram);

	// проверка шейдерной программы на корректность
	if (!ShaderProgramValidate(shaderProgram))
		return false;

	// создадим примитив для сферы
	MeshCreateSphere(mesh, vec3(0.0f, 0.0f, 0.0f), 1.0f);
	
	// создадим и настроим камеру
	CameraCreate(mainCamera, -1.0f, -1.0f, -1.0f);
	CameraOrthographic(mainCamera, -0.5f, 0.5f, -0.5f, 0.5f, -10.0f, 10.0f);
	CameraRotate(mainCamera, (float)(-math_degrees * asin((double)1/sqrt(3.0))), 135.0f, 0.0f);

	// проверим не было ли ошибок
	OPENGL_CHECK_FOR_ERRORS();

	return true;
}