OpenGLプログラムはオブジェクトを表示しませんか?

ガスパールチリオン

OpenGLプロジェクトは、オブジェクトを表示できなくなりました。すべてを最初から作り直そうとしましたが、それでも機能しません。

メインコード

#include <vector>
#include <iostream>
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <imgui.h>
#include <imgui_impl_glfw_gl3.h>
#include "Loader.h"

void on_error(int error, const char* description)
{
    std::cout << "GLFW error " << error << " : \"" << description << "\"" << std::endl;
}

int main()
{
    //Init glfw
    glfwSetErrorCallback(on_error);
    if (!glfwInit()) return  -1;
    glfwWindowHint(GLFW_SAMPLES, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    //Init window
    auto window = glfwCreateWindow(1920, 1080, "gl_Crane", NULL, NULL);
    if (!window) { glfwTerminate(); return -1; }
    glfwMakeContextCurrent(window);

    //Init glew
    glewExperimental = true;
    if (glewInit() != GLEW_OK) { glfwTerminate(); return -1; }

    //Some opengl options
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_DEBUG_OUTPUT);
    glDepthFunc(GL_LESS);
    //glEnable(GL_CULL_FACE);

    //matrices
    std::vector<glm::vec3> vertices = {
        {-.2f, -.2f, 0}, {0, .2f, 0}, {.2f, -.2f, 0}
    };
    std::vector<glm::vec3> colors = {
        {1, 0, 0}, {0, 1, 0}, {0, 0, 1}
    };
    std::vector<GLushort> indexes = {
        0, 1, 2
    };

    //vertexArray
    GLuint vertex_array;
    glGenVertexArrays(1, &vertex_array);
    glBindVertexArray(vertex_array);

    //vertexbuffer
    GLuint vertex_buffer;
    glGenBuffers(1, &vertex_buffer);
    glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * vertices.size(), vertices.data(), GL_STATIC_DRAW);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(glm::vec3), nullptr);

    //colorbuffer
    GLuint color_buffer;
    glGenBuffers(1, &color_buffer);
    glBindBuffer(GL_ARRAY_BUFFER, color_buffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * colors.size(), colors.data(), GL_STATIC_DRAW);
    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(glm::vec3), nullptr);

    //indexbuffer
    GLuint index_buffer;
    glGenBuffers(1, &index_buffer);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_buffer);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLushort) * indexes.size(), indexes.data(), GL_STATIC_DRAW);

    glBindVertexArray(0);

    //Init shader
    auto shader_program = new ShaderProgram;
    shader_program->initFromFiles("../Crane/simple.vert", "../Crane/simple.frag");
    //shader_program->addUniform("MVP");


    ImGui_ImplGlfwGL3_Init(window, true);
    glfwSwapInterval(1);

    while (!glfwWindowShouldClose(window))
    {
    ImGui_ImplGlfwGL3_NewFrame();
    ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);

        //maj viewport
        int display_w, display_h;
        glfwGetFramebufferSize(window, &display_h, &display_w);
        glViewport(0, 0, display_w, display_h);

        //clear screen
        glClearColor(.2f, .2f, .2f, 0);
        glClear(GL_COLOR_BUFFER_BIT);

        //draw stuff
        shader_program->use();
        glBindVertexArray(vertex_array);
        glEnableVertexAttribArray(0);
        glEnableVertexAttribArray(1);

        //auto mvp = glm::mat4(1);
        //glUniformMatrix4fv(shader_program->uniform("MVP"), 1, GL_FALSE, glm::value_ptr(mvp));
        glDrawElements(GL_TRIANGLES, indexes.size(), GL_UNSIGNED_SHORT, nullptr);

        glDisableVertexAttribArray(0);
        glDisableVertexAttribArray(1);
        glBindVertexArray(0);

        shader_program->disable();
        ImGui::Render();
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    shader_program->disable();
    ImGui_ImplGlfwGL3_Shutdown();
    glfwTerminate();
    return 0;
}

フラグメントシェーダー

#version 430
in vec3 fColors;
out vec4 fragColors;
void main()
{
    fragColors = vec4(fColors, 1.0);
}

頂点シェーダー

#version 430    
layout (location = 0) in vec4 vertexPosition; 
layout (location = 1) in vec3 vertexColor; 
out vec3 fColors; 
void main() 
{ 
    fColors = vertexColor; 
    gl_Position = vertexPosition; 
}

さらに、ここからシェーダーローダーを使用します:r3duxシェーダーローダー

Rabbid76

プログラムでは、深度テストglEnable(GL_DEPTH_TEST))。
フラグメントの深さは別のバッファーに保存されます。このバッファも、カラーバッファの場合と同様に、すべてのフレームの開始時にクリアする必要があります。参照glClear

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

もちろん、深度テストを無効にすると、三角形も「表示」されます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

shared_ptrは、プログラムの終了時にオブジェクトを破棄しません

分類Dev

オブジェクト追跡プログラムは、出力画像に追跡されたポイントを表示しません

分類Dev

JListはオブジェクトを表示しませんか?

分類Dev

「プログラムオブジェクトが不完全です」を解決します。openglエラー

分類Dev

プログラムでPOJOオブジェクトを取得しますか?

分類Dev

Jenkinsマルチ構成プロジェクトはビルドステップでカスタムプラグインを表示しませんか?

分類Dev

C#プログラムは過去のオブジェクトインスタンスを実行しません

分類Dev

C#プログラムで使用されるSQLステートメントは、データベース「System.Data.SqlClient.SqlException(0x80131904):無効なオブジェクト名 'CDA'を表示しています。」を認識しません。

分類Dev

'型エラーを修正する方法:'フロート 'オブジェクトは私のプログラムで反復可能ではありません'?

分類Dev

Laravelプロジェクトでホストした後、HighChartsはグラフィックを表示しません

分類Dev

Angular Mat AutoCompleteは、バックエンドから返されたオブジェクトのドロップダウンリストを表示/表示しません

分類Dev

Angularはオブジェクトを表示しません

分類Dev

InterfaceBuilderはオブジェクトを表示しません

分類Dev

Matlabインスペクターは、サブクラスのオブジェクトプロパティを一覧表示しません

分類Dev

Luaオブジェクト指向プログラミング-「クラス」のインスタンスを新しくする方法がわかりませんか?

分類Dev

Nativescriptドロップダウンプラグインは、値ではなくオブジェクトオブジェクトのみを表示します

分類Dev

2番目のオブジェクトを作成した後、コンストラクタープログラムはgetlineを何に使用するかを尋ねません

分類Dev

JavaScriptランタイムエラー:オブジェクトはプロパティまたはメソッド 'jqGrid'をサポートしていません

分類Dev

JavaScriptランタイムエラー:オブジェクトはプロパティまたはメソッド 'prop'をサポートしていません

分類Dev

プログラムを作成しましたが、TypeErrorがあります: "'int'オブジェクトに属性 '__getitem__'"がありません

分類Dev

カスタムjQueryプラグインは[オブジェクトオブジェクト]を返します

分類Dev

スクリプトエラーJavaScriptランタイムエラー:オブジェクトはdatatablesプラグインのプロパティまたはメソッド「行」をサポートしていません

分類Dev

Hibernateは、ログにエラーが発生しなくてもオブジェクトを保存しません

分類Dev

OpenGLプログラムは三角形を表示しません

分類Dev

JavaScriptエラー:オブジェクトはプロパティプログレスバーをサポートしていません

分類Dev

解析(Java for Android)ログインは、オブジェクトが見つかりませんを返します

分類Dev

解析(Java for Android)ログインは、オブジェクトが見つかりませんを返します

分類Dev

オブジェクトでネストされた配列を使用する場合、プログラムでチェックボックスをオンにしても変更はレンダリングされません

分類Dev

AngularJSはオブジェクトからフォームを削除しません

Related 関連記事

  1. 1

    shared_ptrは、プログラムの終了時にオブジェクトを破棄しません

  2. 2

    オブジェクト追跡プログラムは、出力画像に追跡されたポイントを表示しません

  3. 3

    JListはオブジェクトを表示しませんか?

  4. 4

    「プログラムオブジェクトが不完全です」を解決します。openglエラー

  5. 5

    プログラムでPOJOオブジェクトを取得しますか?

  6. 6

    Jenkinsマルチ構成プロジェクトはビルドステップでカスタムプラグインを表示しませんか?

  7. 7

    C#プログラムは過去のオブジェクトインスタンスを実行しません

  8. 8

    C#プログラムで使用されるSQLステートメントは、データベース「System.Data.SqlClient.SqlException(0x80131904):無効なオブジェクト名 'CDA'を表示しています。」を認識しません。

  9. 9

    '型エラーを修正する方法:'フロート 'オブジェクトは私のプログラムで反復可能ではありません'?

  10. 10

    Laravelプロジェクトでホストした後、HighChartsはグラフィックを表示しません

  11. 11

    Angular Mat AutoCompleteは、バックエンドから返されたオブジェクトのドロップダウンリストを表示/表示しません

  12. 12

    Angularはオブジェクトを表示しません

  13. 13

    InterfaceBuilderはオブジェクトを表示しません

  14. 14

    Matlabインスペクターは、サブクラスのオブジェクトプロパティを一覧表示しません

  15. 15

    Luaオブジェクト指向プログラミング-「クラス」のインスタンスを新しくする方法がわかりませんか?

  16. 16

    Nativescriptドロップダウンプラグインは、値ではなくオブジェクトオブジェクトのみを表示します

  17. 17

    2番目のオブジェクトを作成した後、コンストラクタープログラムはgetlineを何に使用するかを尋ねません

  18. 18

    JavaScriptランタイムエラー:オブジェクトはプロパティまたはメソッド 'jqGrid'をサポートしていません

  19. 19

    JavaScriptランタイムエラー:オブジェクトはプロパティまたはメソッド 'prop'をサポートしていません

  20. 20

    プログラムを作成しましたが、TypeErrorがあります: "'int'オブジェクトに属性 '__getitem__'"がありません

  21. 21

    カスタムjQueryプラグインは[オブジェクトオブジェクト]を返します

  22. 22

    スクリプトエラーJavaScriptランタイムエラー:オブジェクトはdatatablesプラグインのプロパティまたはメソッド「行」をサポートしていません

  23. 23

    Hibernateは、ログにエラーが発生しなくてもオブジェクトを保存しません

  24. 24

    OpenGLプログラムは三角形を表示しません

  25. 25

    JavaScriptエラー:オブジェクトはプロパティプログレスバーをサポートしていません

  26. 26

    解析(Java for Android)ログインは、オブジェクトが見つかりませんを返します

  27. 27

    解析(Java for Android)ログインは、オブジェクトが見つかりませんを返します

  28. 28

    オブジェクトでネストされた配列を使用する場合、プログラムでチェックボックスをオンにしても変更はレンダリングされません

  29. 29

    AngularJSはオブジェクトからフォームを削除しません

ホットタグ

アーカイブ