glew 相关问题

OpenGL扩展牧马人库(GLEW)是一个跨平台的开源C / C ++扩展加载库。 GLEW提供了高效的运行时机制,用于确定目标平台上支持哪些OpenGL扩展。

为什么 glewInit() 会给我一个段错误?

我正在使用 glw 和 glfw 进行 opengl 项目 该项目较大,但只有初始化代码无法正常工作。我使用glew 2.2.0_1和glfw 3.3.8 (顺便说一句。我在 debu 中运行了这个......

回答 1 投票 0

构建 GLEW 程序时未定义引用?

我设置了简单的 OpenGl 项目(Clion IDE,msys 的 g++ 编译器) 我下载了glfw和glew源文件,用mingw32-make手动编译它们。 由于链接问题仍然无法构建项目...

回答 1 投票 0

c++ cmake glew 链接问题

我设置了简单的 OpenGl 项目(Clion IDE,msys 的 g++ 编译器) 我下载了glfw和glew源文件,用mingw32-make手动编译它们。 由于链接问题仍然无法构建项目...

回答 1 投票 0

使用 mingw32 在 Windows 上构建 glew

这是重复的,我对此感到抱歉,但我没有任何其他选择,因为我无法对答案发表评论,而且他们没有解决我的问题。这是原始帖子: 建筑闪闪发光

回答 4 投票 0

如何使用 SDL2 修复“不支持 GLSL 3.30”错误

我正在使用 OpenGL 和 SDL2 在屏幕上绘制一个三角形。 我的问题出在着色器编译阶段。 这是我得到的错误: 错误::着色器::顶点::编译失败 0:1(10):错误...

回答 2 投票 0

在 GLFW 中处理小型引擎的输入

使用learnopengl.com开发一个小型引擎,但过了一段时间,我仍然无法找出处理输入的最佳方法。 当然,我可以按照指南并使用它们的功能: 无效 key_call...

回答 2 投票 0

使用glfw和glew

我在使用 GLFW 和 GLEW 理解一些 opengl 内容时遇到问题。 我有 3 个文件,如下所示: 主要.cpp: #include“gamewindow.h” int main() { 游戏窗口 *游戏窗口 = 新游戏窗口(1024, 768, "

回答 1 投票 0

警告:def 文件末尾的 .drectve 已损坏

我在 eclipse cdt(c++) 中使用 gcc/mingw 安装了 glew、glfw 和 glm,全部都是静态的。 一切正常,但我不喜欢 eclipse 输出控制台中的警告: 警告:损坏的 .drectve 位于...

回答 4 投票 0

如何在OpenGL中设置特定比例?

我正在使用 C++ 和 OpenGL。但我需要将对象缩放到一定比例。对于游戏引擎来说。 我的目标只是设置而不是更改比例。 #定义GLFW_INCLUDE_NONE #包括 我正在使用 C++ 和 OpenGL。但我需要将对象缩放到一定比例。对于游戏引擎来说。 我的目标只是设置比例而不是更改。 #define GLFW_INCLUDE_NONE #include <glm/glm.hpp> #include <glm/gtc/type_ptr.hpp> #include <GLFW/glfw3.h> #include <Glad/glad.h> #include "vendor/ImGui/imgui.h" #include "vendor/ImGui/backends/imgui_impl_glfw.h" #include "vendor/ImGui/backends/imgui_impl_opengl3.h" #include <stdio.h> #define WINDOW_WIDTH 640 #define WINDOW_HEIGHT 480 void error_callback(int error, const char* description) { fprintf(stderr, "Error: %s\n", description); } const char* vertexShaderSource = "#version 330 core\n" "layout(location = 0) in vec3 aPos;\n" "uniform mat4 projection;\n" "void main()\n" "{\n" " gl_Position = projection * vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" "}\0"; const char* fragmentShaderSource = "#version 330 core\n" "out vec4 FragColor;\n" "uniform vec2 wsize;\n" "void main()\n" "{\n" " vec2 position = gl_FragCoord.xy;\n" " FragColor = vec4(position.x/wsize.x, position.x/position.y/wsize.x,position.y/wsize.y, 1.0f);\n" "}\n\0"; float aspectRatio; glm::mat4 projection; void framebuffer_size_callback(GLFWwindow* window, int width, int height) { glViewport(0, 0, width, height); aspectRatio = (float)width / (float)height; projection = glm::ortho(-aspectRatio, aspectRatio, -1.0f, 1.0f, -1.0f, 1.0f); } int main() { if (!glfwInit()) { // Initialization failed } glfwSetErrorCallback(error_callback); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); GLFWwindow* window = glfwCreateWindow(640, 480, "GL YA!", NULL, NULL); if (!window) { // Window or context creation failed } glfwMakeContextCurrent(window); gladLoadGL(); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); float vertices[9 * 2] = { -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.5f, 0.5f, 0.0f, 0.5f, 0.5f, 0.0f, -0.5f, 0.5f, 0.0f, -0.5f, -0.5f, 0.0f, }; glfwSwapInterval(1); GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &vertexShaderSource, NULL); glCompileShader(vertexShader); GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL); glCompileShader(fragmentShader); GLuint shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vertexShader); glAttachShader(shaderProgram, fragmentShader); glLinkProgram(shaderProgram); glDeleteShader(vertexShader); glDeleteShader(fragmentShader); GLuint VBO; glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); GLuint VAO; glGenVertexArrays(1, &VAO); glBindVertexArray(VAO); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGuiIO& io = ImGui::GetIO(); (void)io; io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; io.ConfigDockingWithShift = false; ImGui::StyleColorsDark(); const char* glsl_version = "#version 100"; ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init(glsl_version); float x = 0; float y = 0; float z = 0; while (!glfwWindowShouldClose(window)) { int width, height; glfwGetFramebufferSize(window, &width, &height); framebuffer_size_callback(window, width, height); ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); ImGui::DockSpaceOverViewport(ImGui::GetMainViewport(), ImGuiDockNodeFlags_PassthruCentralNode); ImGui::Begin("Hello OpenGL!"); ImGui::InputFloat("X", &x); ImGui::InputFloat("Y", &y); ImGui::InputFloat("Z", &z); ImGui::End(); ImGui::Render(); glViewport(0, 0, width, height); glClear(GL_COLOR_BUFFER_BIT); //Square glUseProgram(shaderProgram); GLint wsize = glGetUniformLocation(shaderProgram, "wsize"); glUniform2f(wsize, width, height); /* glm::mat4 transform = glm::mat4(1.0f); // Start with an identity matrix transform = glm::translate(transform, glm::vec3(x, y, z)); // Move the triangle along the x and y axes for (int i = 0; i < 9 * 2; i += 3) { glm::vec4 vertex = transform * glm::vec4(vertices[i], vertices[i + 1], vertices[i + 2], 1.0f); vertices[i] = vertex.x; vertices[i + 1] = vertex.y; vertices[i + 2] = vertex.z; } */ float currentX = 0.0f; float currentY = 0.0f; float currentZ = 0.0f; for (int i = 0; i < 9 * 2; i += 3) { currentX += vertices[i]; currentY += vertices[i + 1]; currentZ += vertices[i + 2]; } currentX /= 9; currentY /= 9; currentZ /= 9; float tx = x - currentX; float ty = y - currentY; float tz = z - currentZ; for (int i = 0; i < 9 * 2; i += 3) { vertices[i] += tx; vertices[i + 1] += ty; vertices[i + 2] += tz; } for (int i = 0; i < 9 * 2; i += 3) { vertices[i] += x; vertices[i + 1] += y; vertices[i + 2] += z; } glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glUniformMatrix4fv(glGetUniformLocation(shaderProgram, "projection"), 1, GL_FALSE, glm::value_ptr(projection)); glBindVertexArray(VAO); glDrawArrays(GL_TRIANGLES, 0, 6); //ImGui ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); glfwSwapBuffers(window); glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); } 我不知道该怎么办。我想要一个精确的变量来设置,而不是改变大小。 我正在寻找使用 glm 的解决方案,稍后我会将所有内容放入类中。 如果您有网格的顶点数据并且想要缩放对象而不迭代网格数据,那么解决方案是让着色器为您完成此操作。 为此,我们只需要在顶点着色器中引入一个uniform变量即可。 在应用变换之前,我们首先必须缩放顶点位置,例如 //vertex shader in vec3 aPos; //position coords uniform vec3 uScale; //scale factor uniform mat4 uProjection; //mvp matrix int main() { gl_Position = uProjection * vec4(aPos * uScale, 1.0); }

回答 1 投票 0

尝试使用 gcc 编译我的 opengl 项目时出现链接器错误

我使用 glfw 和 glew 来创建窗口,它给了我链接器错误。我该如何解决它。这是我第一次安装 glfw 和 glew,所以我可能错过了安装步骤。任何...

回答 1 投票 0

尝试构建 GLEW 项目时出现 MinGW 链接器错误,尽管库(glew32.a)似乎没问题

我在使用 Cmake 链接我的 OpenGL 项目时遇到问题。 为了使用 OpenGL 扩展,我下载了预构建的 GLEW 库二进制文件。 但在构建我的项目后,我收到了很多警告: 跳过

回答 1 投票 0

SDL_GL_SwapWindow() 抛出异常。 0x00007FF9C6E74A40(nvoglv64.dll)是0x0000000000000000

我正在尝试将一个简单的四边形渲染到屏幕上: #包括 #包括 #包括 #包括 常量 int SCREEN_WIDTH = 640; 反对...

回答 1 投票 0

使用 Bullet 物理和纹理时出现 C++ 错误

TextureLoader:文件名/root/SourceCodes/CPP/Assets/Textures/globe.jpg malloc():无效大小(未排序) 当我尝试运行这个时: // 需要首先包含 GLEW #包括 // G...

回答 1 投票 0

GLEW初始化问题导致程序无法输出

我在尝试将 GLEW 库用于我的基本 OpenGL 程序时遇到问题,该程序是使用 GLFW (glfw3.h) 编写的。一切编译都没有错误,但是一旦我调用 glewIni...

回答 1 投票 0

为什么使用 glLineStipple() 函数时不显示虚线?

我正在使用 OpenGL 的 glLineStipple() 函数来绘制虚线。一切正确,但输出屏幕上不显示虚线。输出屏幕完全空白。 这是我的代码: #我...

回答 1 投票 0

UI 中闪烁的对象

我正在尝试将两个圆锥体对象渲染到屏幕上,但屏幕有点闪烁。它一次只显示一个圆锥体。下面是我到目前为止的代码。我按照互联网上的一些说明进行操作

回答 1 投票 0

CMake 找不到 GLEW 库

我在使用 GLEW 构建 CMake 项目时遇到问题。在解决了本网站上具有类似名称的问题后,我找到了以下 CmakeLists.txt: 设置(GLEW_DIR“ext/glew-2.2.0&...

回答 1 投票 0

库已正确添加到智能感知中,但构建和调试失败

这是我在调试或运行时收到的错误。 由于共享库事件而停止(未添加或删除库) 已加载“/lib64/ld-linux-x86-64.so.2”。符号已加载。 [线程调试...

回答 1 投票 0

尝试构建 GLEW 项目时出现项目链接错误,尽管库(glew32.a)似乎没问题

我在使用 Cmake 链接我的 OpenGL 项目时遇到问题。 为了使用 OpenGL 扩展,我下载了预构建的 GLEW 库二进制文件。 但在构建我的项目后,我收到了一个警告: 跳过 incompa...

回答 1 投票 0

在 Linux 上使用 GLES 进行glewInit?

使用 ApiTrace (glx/egl) 的 [RFC] C 源代码编写功能,我成功地获取了 Android 上正在运行的应用程序的跟踪,并为该跟踪生成了 C 代码。这段代码...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.