質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
GLFW

GLFWは、OpenGLを使用してアプリ開発を行うためのフレームワークです。Macにも対応しているマルチプラットフォームであることが特徴。ウィンドウ管理、解像度切り替え、入力管理などの機能を持ちます。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

GLSL

GLSL (OpenGL Shading Language) はC言語をベースとしたシェーディング言語です。

解決済

GLSLを適用したコードで頂点座標が変更される原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

GLFW

GLFWは、OpenGLを使用してアプリ開発を行うためのフレームワークです。Macにも対応しているマルチプラットフォームであることが特徴。ウィンドウ管理、解像度切り替え、入力管理などの機能を持ちます。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

GLSL

GLSL (OpenGL Shading Language) はC言語をベースとしたシェーディング言語です。

1回答

0リアクション

0クリップ

538閲覧

投稿2021/04/21 08:33

編集2021/04/21 08:43

提示コードの////コメントの内部のコードです 正方形となる頂点座標を入力して単純なシェーダーを使って描画を行いたいのですが線が描画されてしまいます。この原因がわかりません。頂点情報の位置情報は変わっていないのですが**どうった原因で位置情報が変更されているのでしょうか?**頂点座標を変更するコードはこのプログラムにはありません

試したこと [ 頂点シェーダーファイルのvec4変数の第三引数や第四引数をいじりましたが表示は変わりません。またフラグメントシェーダーは単純に色を描画するだけなので問題ないです。また色が青になることシェーダーファイル適用されています。]

イメージ説明

cpp

struct Vertex { GLfloat position[2]; //GLfloat color[4]; };

cpp

#include "DrawTest.hpp" //コンストラクタ DrawTest::DrawTest() { //////////////////////////////////////////////////////////////////////////////////////////////////// //頂点座標 Vertex rectangleVertex[4] = { //頂点、頂点色 {-0.5f,-0.5f}, {0.5f,-0.5f }, {0.5f,0.5f }, {-0.5f,0.5f } }; /* //頂点座標 Vertex rectangleVertex[4] = { //頂点、頂点色 {-0.5f,-0.5f, 0.0,0.0,1.0,1.0}, {0.5f,-0.5f , 0.0,0.0,1.0,1.0}, {0.5f,0.5f , 0.0,0.0,1.0,1.0}, {-0.5f,0.5f , 0.0,0.0,1.0,1.0} }; */ //vao glGenVertexArrays(1, &vao); glBindVertexArray(vao); //vbo glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); //頂点 glBufferData(GL_ARRAY_BUFFER, 4 * sizeof(Vertex), rectangleVertex, GL_STATIC_DRAW); glVertexAttribPointer(0, 2, GL_FLOAT,GL_FALSE, 4 * sizeof(Vertex), (GLvoid*)0); glEnableVertexAttribArray(0); /* //頂点カラー glBufferData(GL_ARRAY_BUFFER, 4 * sizeof(Vertex), rectangleVertex, GL_STATIC_DRAW); glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(Vertex),(GLvoid*)(2 * sizeof(GLfloat))); glEnableVertexAttribArray(1); */ /////////////////////////////////////////////////////////////////////////////////////////////// } //更新 void DrawTest::Update() { } //描画 void DrawTest::Draw() { glBindVertexArray(vao); glDrawArrays(GL_LINE_LOOP, 0, 4); } //デストラクタ DrawTest::~DrawTest() { glDeleteVertexArrays(1, &vao); glDeleteBuffers(1, &vbo); }

cpp

#include "Shader.hpp" #include "DrawTest.hpp" int main() { if (glfwInit() == GL_FALSE) { std::cerr << "glfw初期化失敗。" << std::endl; return -1; } atexit(glfwTerminate); //プログラム終了時の処理を登録 Window window; //コンテキストを作成 //OpenGL Verison 3.2 Core Profile を選択する glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); glClearColor(1.0, 0.0, 0.0, 1.0); //背景色 // ############################################################################# DrawTest test; Shader shader("Test.vert","Test.frag"); shader.setBindAttribVertex(0, "Position"); shader.setBindAttribFragment(0, "fragment"); while (window) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //カラーバッファをクリア shader.Active(); test.Draw(); window.SwapBuffers(); //ダブルバッファリング } }

glsl

#version 330 core in vec2 position; void main() { gl_Position = vec4(position.x,position.y,1.0,1.0); //座標 }

cpp

#version 330 core out vec4 fragment; void main() { fragment = vec4(0.0,0.0,1.0,1.0); }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2021/04/22 10:44

こちらの質問が複数のユーザーから「過去の低評価」という指摘を受けました。

Zuishin

2021/04/22 01:08

アカウント変更してもまた質問削除してるけど、誰かに注意されたんだろう。 そういうのを読まずに捨てるからなぜ低評価を受けるかわからないんだよ。 簡単に削除できるような質問をするんじゃない。もっと考えてから質問しろ。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

GLFW

GLFWは、OpenGLを使用してアプリ開発を行うためのフレームワークです。Macにも対応しているマルチプラットフォームであることが特徴。ウィンドウ管理、解像度切り替え、入力管理などの機能を持ちます。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

GLSL

GLSL (OpenGL Shading Language) はC言語をベースとしたシェーディング言語です。