1

I am making project of cubesphere Earth. I implemented vertex and fragment shaders for textures and it worked fine (with camera movement). I wanted to add a passthrough geometry shader but i cant get it to work.

Vertex shader

#version 450 core

layout (location = 0) in vec3 position;
layout (location = 1) in vec2 textureCoords;

out vec2 textCoords;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main()
{
    gl_Position = projection * view * model * vec4(position, 1.0);
    textCoords = textureCoords;
}

Geometry shader

#version 450 core
layout (triangles) in;
layout (triangles, max_vertices = 3) out;

in vec2 textCoords[];

out vec2 TextCoords;


void main()
{
int i;
    for(i = 0; i < gl_in.length(); i++)
    {
        gl_Position = gl_in[i].gl_Position;
        TextCoords = textCoords[i];

        EmitVertex();
    }
    EndPrimitive(); 
}  

Fragment shader

#version 450 core

in vec2 TextCoords;

out vec4 fragmentColor;

uniform sampler2D earth;

void main()
{
    fragmentColor = texture(earth, TextCoords);
}

I used shader class from learnopengl, and only thing i changed in Main was geometry shader path in Shader constructor.

BEFORE GEOMETRY SHADER

[]

AFTER GEOMETRY SHADER

enter image description here

1 Answers1

0

Issue was

layout (triangles, max_vertices = 3) out;

Should be

layout (triangle_strip, max_vertices = 3) out;