У меня Nvidia 4080, драйверы обновлены. Я уже проверил библиотеки и думаю, что с ними все в порядке.
Код: Выделить всё
#include
#include
#include
#include
#include
#include
glm::vec3 hexagonPoints[] = {
{0.0f, 0.5f, 0.0f},
{0.433f, 0.25f, 0.0f},
{0.433f, -0.25f, 0.0f},
{0.0f, -0.5f, 0.0f},
{-0.433f, -0.25f, 0.0f},
{-0.433f, 0.25f, 0.0f},
};
GLuint hexagonVBO, hexagonVAO;
const char* vertexShaderSource = R"(
#version 400 core
layout (location = 0) in vec3 aPos;
void main() {
gl_Position = vec4(aPos, 1.0);
}
)";
const char* tessControlShaderSource = R"(
#version 400 core
layout(vertices = 6) out;
void main() {
if (gl_InvocationID == 0) {
gl_TessLevelInner[0] = 1.0;
gl_TessLevelInner[1] = 1.0;
gl_TessLevelOuter[0] = 1.0;
gl_TessLevelOuter[1] = 1.0;
gl_TessLevelOuter[2] = 1.0;
gl_TessLevelOuter[3] = 1.0;
}
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
}
)";
const char* tessEvalShaderSource = R"(
#version 400 core
layout(triangles) in;
void main() {
gl_Position = (gl_TessCoord.x * gl_in[0].gl_Position) +
(gl_TessCoord.y * gl_in[1].gl_Position) +
(gl_TessCoord.z * gl_in[2].gl_Position);
}
)";
const char* fragmentShaderSource = R"(
#version 400 core
out vec4 FragColor;
void main() {
FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
)";
void setupHexagonVAO() {
glGenVertexArrays(1, &hexagonVAO);
glBindVertexArray(hexagonVAO);
glGenBuffers(1, &hexagonVBO);
glBindBuffer(GL_ARRAY_BUFFER, hexagonVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(hexagonPoints), hexagonPoints, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
}
GLuint compileShader(GLenum type, const char* source) {
GLuint shader = glCreateShader(type);
glShaderSource(shader, 1, &source, nullptr);
glCompileShader(shader);
int success;
char infoLog[512];
glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
if (!success) {
glGetShaderInfoLog(shader, 512, nullptr, infoLog);
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/79218662/how-can-i-do-an-hexagon-vs-only-shows-a-triangle[/url]