Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Dlaczego ten shader nie obsługuje plików obj?

$
0
0

Cześć. Mam takie 2 shadery:

#version 330
layout(location = 0) in vec3 position;
layout(location = 1) in vec2 vt;
layout(location = 2) in vec3 normalVector;

uniform mat4 view_matrix;
uniform mat4 perspective_matrix;
uniform mat4 transform;

out vec2 texture_coordinates;
out vec3 vertexColour;

out vec3 vertexToCamera;
out vec3 normalToCamera;

void camera()
{
    texture_coordinates = vt;
    gl_Position = perspective_matrix * view_matrix * transform * vec4(position, 1.0);
}

void OBJLoader()
{
	normalToCamera = vec3(view_matrix * vec4(normalVector, 0.0));
	vertexToCamera = vec3(view_matrix * vec4(position, 1.0));
}

void main() 
{
   OBJLoader();
   camera();
}

 

 

#version 330

layout(location = 0) in vec3 position;
layout(location = 1) in vec2 texture_coord;
layout(location = 2) in vec3 normal_vector;

uniform mat4 view_matrix;
uniform mat4 projection_matrix;
uniform mat4 positionMatrix;

out vec2 coords;
 
void main() 
{ 
    coords = texture_coord;
    gl_Position = projection_matrix * view_matrix * positionMatrix * vec4(position, 1.0);
}

 

Tylko że pierwszy shader w przeciwieństwie do drugiego nie obsługuje wierzchołków które zostały wczytane przez assimp z pliku obj (po prostu nie obiekt się nie rysuje ). Kod rysowania obiektu wygląde tak:

	if (Auxiliary::getDistance(Window::camera_position, position, 200))
	{
		glUniform1i(Slots::colorTextures, 0);
		transform = glm::translate(glm::mat4(1.0f), position);
		transformRot = glm::rotate(transform, rotation.x, glm::vec3(1, 0, 0));
		transformRot = glm::rotate(transformRot, rotation.y, glm::vec3(0, 1, 0));
		transformRot = glm::rotate(transformRot, rotation.z, glm::vec3(0, 0, 1));
		transformScale = glm::scale(transformRot, scaling);

		glUniformMatrix4fv(Slots::transforms, 1, GL_FALSE, glm::value_ptr(transformScale));
		
		glBindVertexArray(vao);
		for (unsigned int i = 0; i < startingVertex.size(); ++i)
		{
			glActiveTexture(GL_TEXTURE0);
			glBindTexture(GL_TEXTURE_2D, textures[i]);
			glDrawArrays(GL_TRIANGLES, startingVertex[i], verticesCount[i]);
		}

		Shaders::setUniform(Slots::colour, glm::vec4(1.0f, 1.0f, 1.0f, 1.0f));
	}

pierwszy if sprawdza czy nie jesteśmy za daleko.


Viewing all articles
Browse latest Browse all 21942

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra