Ошибка OpenGL 1280 появляется в glDrawArrays() вызов.
Когда я искал в Интернете, я обнаружил, что это может быть вызвано недействительными перечислениями.

GL_ENUM Мне кажется, все в порядке. Также я включил шейдеры и массивы вершин перед вызовом отрисовки.

Ничто не попадает на экран.

#include»reader.h»#include»window.h»#include»shader.h»int main() < float vertices[] = < -0.5f, -0.5f, 0.0f , 0.5f, -0.5f, 0.0f , 0.0f, 0.5f, 0.0f >; Window window; GLuint vao; glGenVertexArrays(1, glBindVertexArray(vao); Shader shader; shader.addShader(«./src/shaders/basic.vtx»,GL_VERTEX_SHADER); shader.addShader(«./src/shaders/basic.frg», GL_FRAGMENT_SHADER); shader.compile(); shader.enable();GLuint vbo; glGenBuffers(1, glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices,GL_STATIC_DRAW); GLint pos_in = glGetAttribLocation(shader.getProgram(), «pos_in»); if (pos_in < 0) < std::cout glVertexAttribPointer(pos_in, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0); glEnableVertexAttribArray(pos_in);while (!window.closed()) < window.update(); glDrawArrays(GL_TRIANGLES,0,3); >return 0; >
#pragma once #include #include #include #include»reader.h» class Shader < std::vectorshaders; GLuint program; public : GLuint return program; >Shader() < program = glCreateProgram(); >void addShader(const char * path, GLenum type) < std::string data = ShaderReader(path).read_shader(); const char * chardata = data.c_str(); GLuint shader = glCreateShader(type); glShaderSource(shader, 1, glCompileShader(shader); int success; char buffer[512]; glGetShaderiv(shader, GL_COMPILE_STATUS, if (!success) < glGetShaderInfoLog(shader, 512, NULL, buffer); std::cout std::cout void compile() < for (int i = 0; i != shaders.size();i++) < glAttachShader(program, shaders[i]); >glLinkProgram(program); glValidateProgram(program); glUseProgram(program); int status; glGetProgramiv(program, GL_COMPILE_STATUS, char buffer[512]; if (!status) < glGetProgramInfoLog(program,512,NULL,buffer); std::cout std::cout void enable() < glUseProgram(program); >void disable() < glUseProgram(0); >~Shader() < for (int i = 0; i != shaders.size();i++) < glDeleteShader(shaders[i]); >> >;
#version 400 layout (location = 0 ) in vec3 pos_in ; void main()
#version 400 out vec4 color; void main()

Источник: web-answers.ru

OpenGL Error:1280 (Invalid enum) fix in 2021| Minecraft TLauncher |Fakhri Cox

Steamlynx Industrial Minecraft Blog

Итак, после обновления драйверов видеокарты ( GTX 560 Ti, установлен драйвер 320.18) возникли проблемы с клиентом.

Читайте также:  Как будет по английски булыжник в Майнкрафте

В консоли выдается ошибка:
[INFO] [STDERR] GL Error 1280: Invalid enum pre-useProgram

Клиент при это вроде работает, ошибок или провалов FPS не замечал.

Ошибка возникает не всегда, а когда смотришь на воду, причем с определенного расстояния и вода должна быть глубокой.

How to fix OpenGL Error: 1280 (Invalid enum)Minecraft java 1.17.1

Пробовал несколько раз запустить «пустой» майнкрафт 1.5.2 — ошибка не появлялась, либо в карте не создавался такой ландшафт, который вызывает ошибку.

Удалять Optifine из сборки пробовал, не помогает. Версии Forge пробовал разные — и 710 и 712.

Кто-нибудь сталкивался с подобной проблемой? Поисков в Google нашел что такая проблема встречается, но решений нет. Искал очень долго.

Пока проблема не будет решена, я, скорее всего, заморожу съемки новых серий.

Источник: minecraft42.blogspot.com

как избавиться от GL_INVALID_ENUM?

Функции glDrawElements и glDrawArrays выдают ошибку 1280, т.е. GL_INVALID_ENUM, вот код:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnableClientState ( GL_VERTEX_ARRAY ); glBindBuffer(GL_ARRAY_BUFFER, *vboPos); glVertexPointer(4, GL_FLOAT, 0, 0); glEnableClientState ( GL_COLOR_ARRAY ); glBindBuffer(GL_ARRAY_BUFFER, *vboColor); glColorPointer(4, GL_FLOAT, 0, 0); glEnableClientState ( GL_INDEX_ARRAY ); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, *vboIndex); glIndexPointer(GL_UNSIGNED_INT, 0,0); //glDrawArrays(GL_LINES, 0, dmesh_width); glDrawElements(GL_LINES, dmesh_width, GL_UNSIGNED_INT/*GL_UNSIGNED_SHORT*/, NULL); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_INDEX_ARRAY); glBindBuffer( GL_ARRAY_BUFFER, 0 ); SDK_CHECK_ERROR_GL();

Причем ошибка стала появляться после того, как я добавил индексный буфер. Когда были только цвета и координаты всё работало:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnableClientState ( GL_VERTEX_ARRAY ); glBindBuffer(GL_ARRAY_BUFFER, *vboPos); glVertexPointer(4, GL_FLOAT, 0, 0); glEnableClientState ( GL_COLOR_ARRAY ); glBindBuffer(GL_ARRAY_BUFFER, *vboColor); glColorPointer(4, GL_FLOAT, 0, 0); glDrawArrays(GL_POINTS, 0, dmesh_width * dmesh_height); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glBindBuffer( GL_ARRAY_BUFFER, 0 );

Подскажите где я накосячил?

#1
16:20, 1 дек 2014

Ты на основании этой строчки :

Тебе нужно ошибку проверять после каждой строчки.. Ошибка однажды выставленная уже ни когда не сбрасывается пока ты ее не прочитаешь.

Читайте также:  Что в minecraft можно сделать из динамита

#2
16:21, 1 дек 2014

Specifies the data type of each color index in the array. Symbolic constants GL_UNSIGNED_BYTE, GL_SHORT, GL_INT, GL_FLOAT, and GL_DOUBLE are accepted. The initial value is GL_FLOAT.

#3
18:21, 1 дек 2014

Dilim
> glIndexPointer(GL_UNSIGNED_INT, 0,0);
Убери и забудь про это

#4
18:21, 1 дек 2014

И про GL_INDEX_ARRAY тоже

Источник: gamedev.ru