Vertex:

#version 120

void main() {
	gl_TexCoord[0] = gl_MultiTexCoord0;
	gl_Position = ftransform();
}

Fragment:

#version 120

uniform sampler2D tex;

void main(){
    vec4 texSlmp = texture2D(tex, gl_TexCoord[0].st);
    gl_FragColor = vec4(texSlmp.r, texSlmp.g, texSlmp.b, 1.0);
}

All I get with this is a black screen.

I cannot seem to get tutorials for anything older than OpenGL 3.3, and for my usecase, I could go lower, except everyone tells me “OpenGL is obsolete, try Vulkan instead”.

gl_TexCoord[0] seem to be all zeros if I modify the fragment shader to try to output gl_TexCoord[0].st, so its content would be displayed as color information, which I did for a different test. Also I can’t find anything on how do I “pass” textures (or other values) to the shaders in the official docs, nor any of the tutorials I could find explains how that actually works.

EDIT: Target version is OpenGL 2.1/GLSL 1.20

EDIT2: I updated the shaders to GLSL 3.30, but then my DuckDuckGo search results suddenly turned bad about the subject, and in/out still doesn’t work between vertex and fragment shaders (values taken from the vertex shader is all zero).

    • refalo
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 month ago

      I’m curious why you want to target 2.1 specifically? A lot of drivers these days don’t go below 3.x

      And just changing the shader to #version 330 often isn’t enough, that’s why we need to see your setup code either way.

      Preferably a minimally reproducible example project that we can build and test to be able to tell you exactly what’s wrong with your code.

      • ZILtoid1991@lemmy.worldOP
        link
        fedilink
        arrow-up
        1
        ·
        1 month ago

        Okay, I’ve changed things around, it seems there was a typo, I fixed it, now I’m getting access violation errors from nvoglv64.dll.