VAO не рендерится, OpenGL ⇐ C++
-
Anonymous
VAO не рендерится, OpenGL
Я уже некоторое время пытаюсь заставить объект массива отображаться в окне. Похоже, функции GLEW не работают. Результатом должен быть треугольник, отображаемый в окне вывода. Возможно, функции устарели или какая-то функция отсутствует.
#include #include #include #include #include #include #include #include #include #include использование пространства имен std; ГЛуинт вао = 0; ГЛуинт вбо = 0; int main(void) { если (!glfwInit()) { выход (EXIT_FAILURE); } glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 2); glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 0); GLFWwindow* window = glfwCreateWindow(640, 640, «Пример OpenGL», NULL, NULL); если (!окно) { glfwTerminate(); выход (EXIT_FAILURE); } glfwMakeContextCurrent (окно); glfwSwapInterval (1); глевинит(); static const GLfloat g_vertex_buffer_data[] = { 1.0ф, 1.0ф, 0.0ф, 1.0ф, 1.0ф, 0.0ф, 0.0ф, 1.0ф, 0.0ф, }; glGenVertexArrays(1, &vao); glBindVertexArray (вао); glGenBuffers(1, &vbo); glBindBuffer (GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(GLfloat), &g_vertex_buffer_data[0], GL_STATIC_DRAW); //glBindBuffer(GL_ARRAY_BUFFER, 0); const float DEG2RAD = 3,14159/180; плавающий г = 0,0; плавающее г = 0,3; плавающее значение b = 0,6; while (!glfwWindowShouldClose(окно)) { //Настройка просмотра плавающий коэффициент; int ширина, высота; glfwGetFramebufferSize (окно, ширина, высота); соотношение = ширина / (плавающая) высота; glViewport (0, 0, ширина, высота); glClear (GL_COLOR_BUFFER_BIT); //Рисунок glColor3f (р, г, б); glEnableClientState (GL_VERTEX_ARRAY); glBindBuffer (GL_ARRAY_BUFFER, vbo); glVertexPointer(3, GL_FLOAT, 0, &g_vertex_buffer_data[0]); glDrawArrays (GL_TRIANGLES, 0, 3); glDisableClientState (GL_VERTEX_ARRAY); //Заменяем буфер и проверяем наличие событий glfwSwapBuffers (окно); glfwPollEvents(); } glfwDestroyWindow (окно); glfwTerminate; выход (EXIT_SUCCESS); } В окне должен отображаться треугольник.
Я уже некоторое время пытаюсь заставить объект массива отображаться в окне. Похоже, функции GLEW не работают. Результатом должен быть треугольник, отображаемый в окне вывода. Возможно, функции устарели или какая-то функция отсутствует.
#include #include #include #include #include #include #include #include #include #include использование пространства имен std; ГЛуинт вао = 0; ГЛуинт вбо = 0; int main(void) { если (!glfwInit()) { выход (EXIT_FAILURE); } glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 2); glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 0); GLFWwindow* window = glfwCreateWindow(640, 640, «Пример OpenGL», NULL, NULL); если (!окно) { glfwTerminate(); выход (EXIT_FAILURE); } glfwMakeContextCurrent (окно); glfwSwapInterval (1); глевинит(); static const GLfloat g_vertex_buffer_data[] = { 1.0ф, 1.0ф, 0.0ф, 1.0ф, 1.0ф, 0.0ф, 0.0ф, 1.0ф, 0.0ф, }; glGenVertexArrays(1, &vao); glBindVertexArray (вао); glGenBuffers(1, &vbo); glBindBuffer (GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(GLfloat), &g_vertex_buffer_data[0], GL_STATIC_DRAW); //glBindBuffer(GL_ARRAY_BUFFER, 0); const float DEG2RAD = 3,14159/180; плавающий г = 0,0; плавающее г = 0,3; плавающее значение b = 0,6; while (!glfwWindowShouldClose(окно)) { //Настройка просмотра плавающий коэффициент; int ширина, высота; glfwGetFramebufferSize (окно, ширина, высота); соотношение = ширина / (плавающая) высота; glViewport (0, 0, ширина, высота); glClear (GL_COLOR_BUFFER_BIT); //Рисунок glColor3f (р, г, б); glEnableClientState (GL_VERTEX_ARRAY); glBindBuffer (GL_ARRAY_BUFFER, vbo); glVertexPointer(3, GL_FLOAT, 0, &g_vertex_buffer_data[0]); glDrawArrays (GL_TRIANGLES, 0, 3); glDisableClientState (GL_VERTEX_ARRAY); //Заменяем буфер и проверяем наличие событий glfwSwapBuffers (окно); glfwPollEvents(); } glfwDestroyWindow (окно); glfwTerminate; выход (EXIT_SUCCESS); } В окне должен отображаться треугольник.
Мобильная версия