Подключение Glut к Visual Studio
Привет. Итак, работать с OpenGL проще и много примеров с использованием библиотеки GLUT, поэтому ее и загружаем в первую очередь — нам нужны бинарники, собранные под Win32 — загружаем их отсюда http://user.xmission.com/~nate/glut.html, файл glut-3.7.6-bin.zip (117 KB)
После распаковываем, и можно скопировать папку к папке проекта. Далее остается настроить свойства проекта, для этого заходим в меню Project — Properties. Заходим в раздел C/C++, находим пункт Additional Include Directories — это дополнительные папки, в которых Visual Studio будет искать заголовочные файлы (.h). Добавляем в список директорию, в которой лежит glut.h
Затем переходим в раздел Linker и там также добавляем дополнительные директории для поиска lib файлов (указываем путь до папки с glut32.lib)
Теперь нужно еще указать, что необходимо линковать саму библиотеку glut32.lib. Это делается в разделе Linker — Input, Additional Dependencies. В нем просто указываем имя либ-файла glut32.lib.
На этом настройки закончены и можно приступать к примеру (взято отсюда):
#include «stdafx.h»
#include
void Display() <
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
>
void Initialize() <
glClearColor(0.8, 1.0, 0.6, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-200.0, 200.0, -200.0, 200.0, -5.0, 5.0);
>
int main(int argc, char ** argv) <
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 200);
glutCreateWindow(«Our first GLUT application!»);
glutDisplayFunc(Display);
Initialize();
glutMainLoop();
return 0;
>
Проект должен удачно скомпилироваться. Для запуска требуется еще скопировать glut32.dll в папку с exe. При запуске на экране будет одно консольное окно и одно OpenGl окно салатового цвета.
После этого рекомендую попробовать проделать тоже самое, но с библиотекой freeglut, т.к. она является намного новее той, что я привел выше. Вам нужно загрузить ее, потом распаковать архив, перейти в директорию \freeglut-2.8.0\freeglut-2.8.0\VisualStudio\2010, откуда запустить файл проекта, обновить до версии 2012 и собрать проект в Release сборке или Debug.
После сборки проекта у вас lib файл и dll будет доступен в \freeglut-2.8.0\lib\x86\Debug. А h-файл в \freeglut-2.8.0\include.
В пример нужно заменить include на
#include
Как подключить opengl в visual studio 2019
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.
B правой части каждого сообщения есть стрелки ⇧ и ⇩ . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок ✔ в правой части сообщения.
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе «Анализ защищенности веб-приложений» Записаться бесплатно!
CTF с учебными материалами Codeby Games Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.
Ошибка в Visual studio opengl. Как решить?
Что делать, при запуске кода выдает ошибку:
1>Main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp_glClear в функции main.
1>Main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp_glDrawArrays в функции main.
1>E:\cod\cod\x64\Debug\cod.exe : fatal error LNK1120: неразрешенных внешних элементов: 2
#include #include #include const char* vertexShaderSource = R"( #version 330 core layout (location = 0) in vec2 aPos; uniform vec2 lightPos; void main() < gl_Position = vec4(aPos, 0.0, 1.0); >)"; const char* fragmentShaderSource = R"( #version 330 core out vec4 FragColor; uniform vec2 lightPos; void main() < vec2 pos = gl_FragCoord.xy / 800.0 * 2.0 - 1.0; float distance = length(pos - lightPos); float intensity = 1.0 / (1.0 + 10.0 * distance * distance); FragColor = vec4(intensity, intensity, intensity, 1.0); >)"; int main() < glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); GLFWwindow* window = glfwCreateWindow(800, 600, "2D Point Light Example", nullptr, nullptr); if (!window) < std::cout glfwMakeContextCurrent(window); glewExperimental = GL_TRUE; if (glewInit() != GLEW_OK) < std::cout GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &vertexShaderSource, nullptr); glCompileShader(vertexShader); GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &fragmentShaderSource, nullptr); glCompileShader(fragmentShader); GLuint shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vertexShader); glAttachShader(shaderProgram, fragmentShader); glLinkProgram(shaderProgram); glDeleteShader(vertexShader); glDeleteShader(fragmentShader); float vertices[] = < -0.05f, -0.05f, 0.05f, -0.05f, 0.05f, 0.05f, 0.05f, 0.05f, -0.05f, 0.05f, -0.05f, -0.05f >; GLuint VAO, VBO; glGenVertexArrays(1, &VAO); glGenBuffers(1, &VBO); glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); glUseProgram(shaderProgram); GLint lightPosLoc = glGetUniformLocation(shaderProgram, "lightPos"); glUniform2f(lightPosLoc, 0.0f, 0.0f); while (!glfwWindowShouldClose(window)) < glClear(GL_COLOR_BUFFER_BIT); glBindVertexArray(VAO); glDrawArrays(GL_TRIANGLES, 0, 6); glBindVertexArray(0); glfwSwapBuffers(window); glfwPollEvents(); >glDeleteVertexArrays(1, &VAO); glDeleteBuffers(1, &VBO); glDeleteProgram(shaderProgram); glfwTerminate(); return 0; >
- Вопрос задан 13 авг. 2023
- 162 просмотра
Комментировать
Решения вопроса 1
Евгений Шатунов @MarkusD Куратор тега C++
все время мелю чепуху 🙂
Ошибка LNK2019 относится к стадии линковки и означает что среди всех объектов линковки так и не нашлось определение обозначенной в ошибке функции.
__imp_glClear и __imp_glDrawArrays — это стандартные функции OpenGL, определены они в библиотеке opengl32.lib , которую и требуется подключить как внешнюю зависимость к твоему проекту.
Зависимости в проект подключаются через свойства проекта Visual Studio.
Ответ написан 13 авг. 2023
Нравится 1 5 комментариев
Risdaw @Risdaw Автор вопроса
а можешь еще помочь, я запускаю проект и у меня выбивает ошибку
Системная ошибка
Не удается продолжить выполнение кода, поскольку система не обнаружила glfw3.dll. Для устранения этой проблемы попробуйте переустановить программу.
и
Системная ошибка
Не удается продолжить выполнение кода, поскольку система не обнаружила glew32.dll. Для устранения этой проблемы попробуйте переустановить программу.
ΟΚ
Risdaw, очевидно, надо скопировать указанную dll в папку с исполняемым файлом
Risdaw @Risdaw Автор вопроса
Александр Ананьев, мне не помогает, я уже во все папки скопировал и ничего все-равно ошибка

Станислав Макаров @Nipheris Куратор тега C++
Risdaw проверьте, какая у вас ставится рабочая директория в вашей дебажной конфигурации. Если я правильно помню, для C++ проектов по-умолчанию это не папка с EXE, а папка проекта. Переделайте так, чтобы была папка с EXE-шником
Евгений Шатунов @MarkusD Куратор тега C++
мне не помогает, я уже во все папки скопировал и ничего все-равно ошибка
Это значит что ты просто замусорил другие папки, так и не скопировав файл в нужную. Такое бывает когда берешься за дело без знаний об инструменте. А где же еще набраться знаний, как не в документации к инструменту?
Если людей о каждой мелочи спрашивать, ты очень быстро останешься один.
Выходная папка проекта задается в настройках проекта.
Ответы на вопрос 1
Добавь opengl32.lib в Properties/Linker/Input.
+ неплохо было бы вам разобраться, как работать с msvc’шным линкером, ибо тогда можно будет самому решать подобные проблемы
Ответ написан 13 авг. 2023
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- OpenGL
Как рисовать png иконки без изменения масштаба?
- 1 подписчик
- вчера
- 15 просмотров

- Visual Studio
- +1 ещё
Как сделать открытие ссылок в webview, а не в браузере?
- 1 подписчик
- 15 янв.
- 24 просмотра
Как установить opengl для visual studion 2017
только начал изучать c++, ну и начал натыкаться на проблемы. Подскажите как установить openGl на vs2017 ? В интернете откопал либо видео 2013 года, либо какой-то glut, даже скачав его с офф в доке не нашел внятного, для себя способа его установить. Также в процессе поиска наткнулся на всякие freeglut, grew и прочее, как я понимаю, библиотеки. Если не затруднит объясните как, куда и откуда устанавливать openGL ? Думаю информация будет полезна и другим чайника 🙂
Отслеживать
задан 22 фев 2019 в 20:23
137 7 7 бронзовых знаков
Нет единственного правильного способа «установить OpenGL». Вам нужно выбрать и поставить две библиотеки: для открытия окна, и для загрузки функций OpenGL (второе — специфика Windows). Для открытия окна подойдут SDL2, GLFW, FreeGLUT. Есть еще просто GLUT, но он довольно старый. Для загрузки функций OpenGL традиционно используют GLEW, из неплохих вариантов есть еще GLAD. Для начала выберите две любые (я бы посоветовал SDL2+GLEW). Сейчас вы по сути просите вам личный гайд написать, но их в гугле и так довольно много. Я бы лучше попробовал какой-нибудь, и спрашивал о конкретных проблемах.
22 фев 2019 в 20:39
@HolyBlackCat , Спасибо за ответ ! Вот на примере SDL2. Я зайдя на сайт нашел 2 версии: Source Code и Development Libraries в каждой тонна файлов, и папок (в dev папок меньше), и вот, я озадачился все ли нужно копировать ? Какие версии библиотек качать ( dev или source code ) ? На примерах в видео видел, как скачивали 3-5 файлов и подключали ./папка/file.h а тут целый список файлов. (*я из веба, мне не привычно, когда библиотека — не 1 файл. Это норма ?)
22 фев 2019 в 20:54
Я же говорю, поищите гайды, там написано что качать. Вам нужен один архив, скорее всего SDL2-devel-2.0.9-VC.zip .