OpenGL(LWJGL):テクスチャへのレンダリングが機能しない

チャール

テキストをテクスチャにレンダリングすることになっているコードがあるので、描画ステップごとに各文字をレンダリングする必要はなく、代わりにレンダリングされたテクスチャを使用できます。ただし、私のコードは想定どおりではなく、テクスチャは空白のままです。数時間いろいろ試してみたらわからないので、質問をします。

問題は以下のこのコードチャンクのどこかにあると確信していますが、そうでないと思われる場合は、他のコードサンプルを喜んで投稿します。私は本当にこれをすでにやりたいと思っています。正確な問題は、作成されたテクスチャが空白であり、レンダリングされないことです(のように見えます)。巨大なクワッドを1つだけ描いてみましたが、それもうまくいかなかったようです。

編集:バッファを反転した後、テクスチャにレンダリングする色を取得できますが、それはすべて1つの色であり(1ピクセルしかサンプリングしていないと思われます)、実際の画像を取得する方法がわかりませんレンダリングして表示したい。

public Text(String text, int x, int y, Font font, float size, GUIComponent parent, Binding binding) {
    super(null, x, y, font.getStringWidth(size, text), font.getStringHeight(size), parent, binding, false);
    this.text = text;
    this.font = font;
    this.width = font.getStringWidth(size, text);
    this.height = font.getStringHeight(size);
    int fbo = glGenFramebuffers();
    glBindFramebuffer(GL_FRAMEBUFFER, fbo);
    int tex = glGenTextures();
    glBindTexture(GL_TEXTURE_2D, tex);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, tex, 0);
    IntBuffer intBuffer = BufferUtils.createIntBuffer(1);
    intBuffer.put(GL_COLOR_ATTACHMENT0);
    intBuffer.flip();
    glDrawBuffers(intBuffer);
    if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
        throw new RuntimeException("Something really bad happened");
    }
    //RENDER
    RenderUtil.recalibrate(width, height, 1.0f); //Does glViewport(width, height), and some matrix stuff
    Camera.updateShader("textshader", "projection", false); //Update projection matrix
    glEnableVertexAttribArray(0);
    glEnableVertexAttribArray(1);
    int width = 0;
    float f = this.width / 1.0f;
    int charWidth = 0;
    for (char c : text.toCharArray()) {
        font.bind(0, c % 256); // calls glBindTexture, this works, have tested
        //ResourceManager.getTexture("grassroadedger1").bind(0, 0);
        charWidth = font.getCharWidth(size, c);
        //float[] verts = new float[] { -1f, 1f, 1f, 1f, 1f, -1f, -1f, -1f };
        float[] verts = new float[] { -1.0f + (width / f), 1.0f, 1.0f + ((width + charWidth) / f), 1.0f, 1.0f + ((width + charWidth) / f), -1.0f, -1.0f + (width / f), -1.0f };
        width += charWidth;
        glBindBuffer(GL_ARRAY_BUFFER, vertexPointer);
        glBufferSubData(GL_ARRAY_BUFFER, 0, RenderUtil.createBuffer(verts));
        glVertexAttribPointer(0, 2, GL_FLOAT, false, 0, 0);

        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, RenderUtil.getIndicesPointer());
        glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

        glBindBuffer(GL_ARRAY_BUFFER, 0);
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
    }
    glDisableVertexAttribArray(0);
    glDisableVertexAttribArray(1);
    //END
    glBindFramebuffer(GL_FRAMEBUFFER, 0);
    glBindTexture(GL_TEXTURE_2D, 0);
    RenderUtil.recalibrate(Window.getWidth(), Window.getHeight(), LuminaEngine.getGlobalImageScale());
    this.setTexture(new Texture(tex, "text_"+size+"_"+text));
}

FragmentShader

    #version 330 core
    in vec2 uv;

    layout(location = 0) out vec4 color;

    uniform sampler2D sampler;

    void main(){

        color = texture2D( sampler, uv );
    }

頂点シェーダー

    #version 330 core

    layout(location = 0) in vec3 vertices;
    layout(location = 1) in vec2 textures;

    out vec2 uv;

    uniform mat4 projection;

    void main(){

         gl_Position =  projection * vec4(vertices,1);

         uv = textures;
    }

編集:drawBuffersのintBufferを反転した後、いくつかのものを表示することができます。ほとんどは大きな青い正方形です。それにもかかわらず進歩

Rabbid76

テクスチャ座標(in vec2 textures;の一般的な頂点属性データの配列を定義したことはありません

次のようなものをコードに追加します。

int texCoordBuffer;
glGenBuffers(1, texCoordBuffer);

float[] texCoord = new float[] { 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f };

glBindBuffer(GL_ARRAY_BUFFER, texCoordBuffer);
glBufferData(GL_ARRAY_BUFFER, RenderUtil.createBuffer(texCoord), GL_STATIC_DRAW);

int tax_attr_i = 1; // layout(location = 1) in vec2 textures;
glVertexAttribPointer(tax_attr_i, 2, GL_FLOAT, false, 0, 0);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

OpenGLフレームバッファのテクスチャへのレンダリングが機能しない

分類Dev

テクスチャが正しくレンダリングされない(OpenGL)

分類Dev

OpenGL 3.3テクスチャがレンダリングされない(黒のテクスチャ、C ++、GLFW / SOIL)

分類Dev

OpenGlの2Dイメージテクスチャリングが期待どおりに機能しない

分類Dev

OpenGL C ++を使用したテクスチャへのレンダリング

分類Dev

OpenGL3.3のコードが正射影でテクスチャをレンダリングしない

分類Dev

OpenGLテクスチャがレンダリングされない

分類Dev

LWJGL一部のテクスチャが機能しない

分類Dev

3D lwjgl の平面地形のレンダリングが機能しない

分類Dev

機能していないテクスチャにレンダリングする

分類Dev

OpenGLテクスチャがGLSLを介してレンダリングされない

分類Dev

OpenGLレンダリングからテクスチャへのCIFilterの適用

分類Dev

LWJGL / OpenGLスケーリングテクスチャが奇妙に

分類Dev

整数テクスチャへのアンチエイリアシングレンダリングがないことを保証します

分類Dev

テクスチャレンダリングは頂点としては機能しませんが、古典的な古いopenglコードとしては機能します

分類Dev

OpenGLコードが市松模様のテクスチャをレンダリングしないのはなぜですか

分類Dev

OpenGL-スムーズなレンダリングが機能しない

分類Dev

動的に高いチャートレンダリングが機能しない

分類Dev

OpenGLESテクスチャが正しくレンダリングされない

分類Dev

OpenGLを使用したテクスチャマッピングが正しく機能しない

分類Dev

テクスチャなしのクワッドがOpenGLES3.0でレンダリングされない

分類Dev

OpenGLテクスチャは、データがnullではないのに黒をレンダリングします

分類Dev

lwjglおよび頂点バッファでレンダリングされないテクスチャ

分類Dev

OpenGL配列テクスチャがまったくレンダリングされない

分類Dev

テンプレートのレンダリング機能でスタイルが機能しない

分類Dev

D3D11:テクスチャへのレンダリング(深度)は赤の広場になり、通常のレンダリングは機能します

分類Dev

LWJGLテクスチャレンダリング/インデックス

分類Dev

Rails 5.0.1Excelへのレンダリングが機能しない

分類Dev

テンプレートとしてのレンダリングテスト:{%static%}が機能しない

Related 関連記事

  1. 1

    OpenGLフレームバッファのテクスチャへのレンダリングが機能しない

  2. 2

    テクスチャが正しくレンダリングされない(OpenGL)

  3. 3

    OpenGL 3.3テクスチャがレンダリングされない(黒のテクスチャ、C ++、GLFW / SOIL)

  4. 4

    OpenGlの2Dイメージテクスチャリングが期待どおりに機能しない

  5. 5

    OpenGL C ++を使用したテクスチャへのレンダリング

  6. 6

    OpenGL3.3のコードが正射影でテクスチャをレンダリングしない

  7. 7

    OpenGLテクスチャがレンダリングされない

  8. 8

    LWJGL一部のテクスチャが機能しない

  9. 9

    3D lwjgl の平面地形のレンダリングが機能しない

  10. 10

    機能していないテクスチャにレンダリングする

  11. 11

    OpenGLテクスチャがGLSLを介してレンダリングされない

  12. 12

    OpenGLレンダリングからテクスチャへのCIFilterの適用

  13. 13

    LWJGL / OpenGLスケーリングテクスチャが奇妙に

  14. 14

    整数テクスチャへのアンチエイリアシングレンダリングがないことを保証します

  15. 15

    テクスチャレンダリングは頂点としては機能しませんが、古典的な古いopenglコードとしては機能します

  16. 16

    OpenGLコードが市松模様のテクスチャをレンダリングしないのはなぜですか

  17. 17

    OpenGL-スムーズなレンダリングが機能しない

  18. 18

    動的に高いチャートレンダリングが機能しない

  19. 19

    OpenGLESテクスチャが正しくレンダリングされない

  20. 20

    OpenGLを使用したテクスチャマッピングが正しく機能しない

  21. 21

    テクスチャなしのクワッドがOpenGLES3.0でレンダリングされない

  22. 22

    OpenGLテクスチャは、データがnullではないのに黒をレンダリングします

  23. 23

    lwjglおよび頂点バッファでレンダリングされないテクスチャ

  24. 24

    OpenGL配列テクスチャがまったくレンダリングされない

  25. 25

    テンプレートのレンダリング機能でスタイルが機能しない

  26. 26

    D3D11:テクスチャへのレンダリング(深度)は赤の広場になり、通常のレンダリングは機能します

  27. 27

    LWJGLテクスチャレンダリング/インデックス

  28. 28

    Rails 5.0.1Excelへのレンダリングが機能しない

  29. 29

    テンプレートとしてのレンダリングテスト:{%static%}が機能しない

ホットタグ

アーカイブ