• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

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

Object Storage Arubacloud
0 głosów
130 wizyt
pytanie zadane 31 października 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)

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.

komentarz 31 października 2016 przez niezalogowany
Zła kategoria, same shadery nie są pisane w CPP
komentarz 31 października 2016 przez Avernis Nałogowiec (27,400 p.)
Ale są obsługiwane przez c++, a nie ma kategorii glsl
komentarz 31 października 2016 przez niezalogowany
"Inne języki"
komentarz 31 października 2016 przez Avernis Nałogowiec (27,400 p.)
Patrz ostatni kod. Nie c++?
komentarz 31 października 2016 przez niezalogowany
A pytanie czasem nie dotyczy shaderów, a nie C++?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 300 wizyt
pytanie zadane 6 lutego 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
0 odpowiedzi 129 wizyt
0 głosów
1 odpowiedź 238 wizyt
pytanie zadane 23 lipca 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)

92,538 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,923 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...