現在、私はメッシュクラスで三角形を描画しようとしています。私はこれを最初にグライと私のWindowクラスのWindow.initializeGraphicsメソッドを呼び出して初期化し、頂点の配列を作成し、私のMesh.addVerticiesメソッドに渡します。各頂点には3つの浮動小数点数x、y、zがあります。その後、メインゲームループのすべてのティックをMesh.drawメソッドと呼びます。3つの浮動小数点(x、y、z)を持つ頂点の配列を持つglBufferData
initializeGraphics方法:メッシュを作成する
void Window::initializeGraphics()
{
glClearColor(0, 0, 0, 0);
glFrontFace(GL_CW);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glEnable(GL_FRAMEBUFFER_SRGB);
}
:
m_Mesh = Mesh();
Vertex data[] = { Vertex(vec3(-1, -1, 0)),
Vertex(vec3(1, -1, 0)),
Vertex(vec3(0, 1, 0)) };
m_Mesh.addVerticies(data);
メッシュヘッダ:
#include "vertex.h"
#include <GLEW\glew>
class Mesh
{
private:
GLuint m_Vbo;
int m_Size;
public:
Mesh();
void addVerticies(Vertex verticies[]);
void draw();
};
メッシュC++ファイル:
#include "mesh.h"
Mesh::Mesh()
{
glGenBuffers(1, &m_Vbo);
}
void Mesh::addVerticies(Vertex verticies[])
{
m_Size = (sizeof(verticies)/sizeof(*verticies));
glBindBuffer(GL_ARRAY_BUFFER, m_Vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(verticies), verticies, GL_STATIC_DRAW);
}
void Mesh::draw()
{
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, m_Vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * 4, 0);
glDrawArrays(GL_TRIANGLES, 0, m_Size);
glDisableVertexAttribArray(0);
}
頂点ヘッダー:
#include "vec3.h"
struct Vertex
{
union
{
vec3 pos;
struct
{
float x, y, z;
};
};
Vertex(vec3 pos_);
};
頂点C++ファイル:
#Include "vertex.h"
Vertex::Vertex(vec3 pos_)
{
pos = pos_;
}
Renderメソッドを:
void MainComponent::render()
{
m_Window.clear();
m_Mesh.draw();
m_Window.update();
}
//m_Window.update();
void Window::update()
{
glfwSwapBuffers(m_GLFWWindow);
glfwPollEvents();
}
//m_Window.clear();
void Window::clear()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
問題には三角形が画面に表示されていない、です。私は間違って何をしていますか?私はまだC++のニュールーリングですが、OpenGlを初めてプログラミングするので、見逃してしまうことが本当に本当に基本的なものになる可能性があります。
ご協力いただきありがとうございます。
-Sean
glBufferData(GL_ARRAY_BUFFER、sizeof(頂点)、頂点、GL_STATIC_DRAW)。 sizeof(頂点)の値が正しいかどうか確認してください。また、シェーダコードはどこですか? –
@ PedroDavidあまりにもありがとう、それを修正する必要はありません。私はそれがレンダリングされなかった理由を発見した。 –