私は現在、OpenGL Super Bible 7th editionを読んでいます。これは、メインのレンダリングループの前に実行されたクラスのメソッドであるSegfault on glNamedBufferStorage
void startup() {
static const float data[] = {
0.25f, -0.25f, 0.5f, 1.0f,
-0.25f, -0.25f, 0.5f, 1.0f,
0.25f, 0.25f, 0.5f, 1.0f,
};
glGenVertexArrays(1, &m_VAO);
glBindVertexArray(m_VAO);
glGenBuffers(1, &m_VBO);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO);
printf("Size of data[]: %lu bytes\n", sizeof(data));
glNamedBufferStorage(m_VBO, sizeof(data), data, GL_DYNAMIC_STORAGE_BIT);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(GLfloat), NULL);
glEnableVertexAttribArray(0);
}
:その上で、私はこのようないくつかの簡単なコードを書きました。
問題は、このコードがglNamedBufferStorage
にsegfaultを生成することです。
私はgdbでデバッグしようとしましたが、なぜsegfaultが発生するのかは分かりません。 data
のサイズに問題があるかどうかを理解しようとしました(したがってprintf sizeof
)。しかし、それは大丈夫と思われる。私はまた別のフラグを使用しようとしました - 無駄にも。
また、付属のソースコードにgrep -R
もありましたが、使用例が見つかりませんでした。
システム://www.opengl:Ubuntuは、打ち鳴らす++
でのみサポート.org/wiki/OpenGL_Loading_Library)あなたは使っていますか?あなたの実装はOpenGL 4.5をサポートしていますか? –
@NicolBolas私は本のフレームワークを使用しています。これはgl3w + glfwを使用しています。正しく動作するようです。正しくコンパイルして実行し、以前の例をいくつか(VBOを作成せずに)うまく働いた。 – poetryofruins