Dahl
Dahl

Reputation: 176

Framebuffer objects with single channel texture attachment? (Color attachment)

I would like the fragment-shader to output a single byte value. Rendered to a one-channel texture attached to a framebuffer object. I have only ever used the default fragment shader to output a vec4 for color. Is this possible? If I initialized the texture bound to the fbo as color attachment like this:

glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);

If so, would I change the fragment shaders out variable from:

out vec4 color

to:

out int color?

(I am trying to render a height map)

Upvotes: 0

Views: 619

Answers (1)

Nicol Bolas
Nicol Bolas

Reputation: 474266

Well, your render target is not an integer texture; it's a normalized integer format, which counts as a float. So the corresponding output variable from your shader should be a floating-point type.

But you can use a vec4 if you like; any components that are not part of the render target will be discarded.

Upvotes: 0

Related Questions