Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606

Linux OpenGL 2.0

22.02.2015, 23:18. Показов 2695. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Думаю, я не первый с таким вопросом, но ответ найти не смог сам.
Как подключить OpenGL 2.0 в Linux к проекту (в смысле, какие include-ы)? И какие флаги для компилятора нужны? И какие пакеты нужно установить?
Вопросы нубские, но если кто знает, ответьте пожалуйста! А то, только OpenGL 1.1 смог использовать...
Заранее спасибо за помощь!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2015, 23:18
Ответы с готовыми решениями:

OpenGl в Linux
Ну ребят, у меня к вам несколько вопросов, так-как я полнй ноль в OpenGL, то не судите строго. В школе задали написать программку, на вход...

Как пользоваться opengl в linux?
Я хочу написать программу на с++ с графикой, но не могу разобраться как подключить графику в linux.

Opengl 3x на linux
Здравствуйте. Втоде поставил opengl на linux, но пример с рисованием треугольника не работает:...

10
Заблокирован
10.03.2015, 13:01
Имена пакетов зависят от дистрибутива сборки линукса. Для убунты одни, для федора другие и т.д.
ОпенГЛ подключается примерно так:
C++
#include <X11/Xlib.h>
#include <X11/cursorfont.h>
#define GL_GLEXT_PROTOTYPES
#define GLX_GLXEXT_PROTOTYPES
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glx.h>
#include <GL/glext.h>
#include <GL/glxext.h>
и подключением библиотек для линковщика:
C++
X11
GL
GLU
И вот здесь https://www.opengl.org/wiki/Tu... _%28GLX%29 есть пример для 3.0. Если вы хотите 2.0, то он вам тоже подойдет, просто не пользуйтесь расширениями 3.0
0
 Аватар для contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
10.03.2015, 16:28  [ТС]
Цитата Сообщение от keepitsimple3 Посмотреть сообщение
Имена пакетов зависят от дистрибутива сборки линукса. Для убунты одни, для федора другие и т.д.
ОпенГЛ подключается примерно так:
Спасибо работает!

Добавлено через 5 минут
Цитата Сообщение от keepitsimple3 Посмотреть сообщение
И вот здесь https://www.opengl.org/wiki/Tu... _%28GLX%29 есть пример для 3.0. Если вы хотите 2.0, то он вам тоже подойдет, просто не пользуйтесь расширениями 3.0
Извините, с английским не очень... Как в linux скомпилировать шейдерную программу и использовать ее?
То есть типа
C
1
2
glCreateProgram(&programHandle);
glUseProgram(programHandle);
Просто знаю только OpenGL ES 2.0 под Android
0
Заблокирован
10.03.2015, 16:56
Цитата Сообщение от contedevel Посмотреть сообщение
Как в linux скомпилировать шейдерную программу и использовать ее?
Не знаю как ее отдельно скомпилировать. Я компилирую ее во время запуска приложения примерно вот таким кодом:

C++
    const char * vsh =
    "#version 330 core\n"
    "in vec3 vertex_pos;\n"
    "in vec2 vertex_tex;\n"
    "out vec2 tex_crd;\n"
    "uniform mat4 mvp;\n"
    "void main() {\n"
    "gl_Position = mvp * vec4(vertex_pos,1);\n"
    "tex_crd = vertex_tex;\n"
    "}";
    uint vertex_Shader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vertex_Shader, 1, (const char * const *)&vsh , 0);
    glCompileShader(vertex_Shader);
 
    const char * fsh =
    "#version 330 core\n"
    "in vec2 tex_crd;\n"
    "out vec4 color;\n"
    "uniform sampler2D tex;\n"
    "void main() {\n"
    "color = texture(tex, tex_crd);\n"
    "}";
    uint fragment_Shader = glCreateShader(GL_FRAGMENT_SHADER);
    glShaderSource(fragment_Shader, 1, (const char * const *)&fsh , 0);
    glCompileShader(fragment_Shader);
 
    uint program = glCreateProgram();
    glAttachShader(program, vertex_Shader);
    glAttachShader(program, fragment_Shader);
    glLinkProgram(program);
    glDeleteShader(vertex_Shader);
    glDeleteShader(fragment_Shader);
 
    int tex_Uniform     = glGetUniformLocation(program, "tex");
    int mvp_Uniform     = glGetUniformLocation(program, "mvp");
    int vpos_Atrib      = glGetAttribLocation(program, "vertex_pos");
    int vtex_Atrib      = glGetAttribLocation(program, "vertex_tex");
0
 Аватар для contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
13.03.2015, 01:45  [ТС]
Цитата Сообщение от keepitsimple3 Посмотреть сообщение
Не знаю как ее отдельно скомпилировать. Я компилирую ее во время запуска приложения примерно вот таким кодом:
Вот, что я подключаю:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <GL/gl.h>
#include <GL/glx.h>


Но там не обявлена функция:
C
1
glCreateProgram()
и подобные
0
Заблокирован
13.03.2015, 03:01
Цитата Сообщение от contedevel Посмотреть сообщение
Но там не обявлена функция:
Попробуй подключить glxext.h

Если не поможет, то можно сделать указатели на эти функции вручную типа вот так:
C++
//
 
PFNGLCREATEPROGRAMARBPROC glCreateProgramARB;
 
glCreateProgramARB = (PFNGLCREATEPROGRAMARBPROC)glXGetProcAddress((const GLubyte*)"glCreateProgramARB");
 
//
Или попробуй скачать другие gl.h glext.h glxext.h с сайта опенгл или где-нибудь еще...
1
 Аватар для contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
13.03.2015, 04:48  [ТС]
Цитата Сообщение от keepitsimple3 Посмотреть сообщение
Попробуй подключить glxext.h
Спасибо, завтра попробую, отпишусь!
0
Заблокирован
14.03.2015, 13:06
contedevel, отображение больших пикселей в opengl

Xubuntu (ubuntu) 14.10,
qt creator стандартный проект:

в .pro файл добавить строку (какие библиотеки подключаем)
C++ (Qt)
1
LIBS += -lGL -lGLU -lglut -lGLU
mainWindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "QMessageBox"
#include "QKeyEvent"
#include <GL/glu.h>
 
#include <QMainWindow>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
public slots:
    void displayMe(float x);
 
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
MainWindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "GL/freeglut.h"
#include "QMouseEvent"
#include "QKeyEvent"
#include "QDebug"
#include <QGLWidget>
#include <iostream>
#include <sstream>
#include <iomanip>
using std::stringstream;
using std::cout;
using std::endl;
using std::ends;
 
using namespace std;
 
void MainWindow::displayMe(float x) {
    x;
         glPointSize(2.0f);
         glBegin(GL_POINTS);
         glVertex3f(0.0f, 0.9f, 0.0f);
         glVertex3f(0.0f, 0.8f, 0.0f);
         glVertex3f(0.0f, 0.7f, 0.0f);
         glVertex3f(0.0f, 0.6f, 0.0f);
         glVertex3f(0.0f, 0.5f, 0.0f);
         glVertex3f(0.0f, 0.4f, 0.0f);
         glVertex3f(0.0f, 0.3f, 0.0f);
         glVertex3f(0.0f, 0.2f, 0.0f);
         glVertex3f(0.0f, 0.1f, 0.0f);
         glVertex3f(0.0f, 0.0f, 0.0f);
         glVertex3f(0.0f, -0.1f, 0.0f);
         glVertex3f(0.0f, -0.2f, 0.0f);
         glColor3f(1.0f,0.0f,0.0f);
         glEnd();
}
 
 
int argc = 0;
char**argv = NULL;
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutInitWindowSize(600, 600);
    glutInitWindowPosition(0,0);
    glEnable(GL_TEXTURE_2D);
    glutCreateWindow("Hello world :D");
    glClear(GL_COLOR_BUFFER_BIT);
    //glViewport(0,0,1200, 00);
    displayMe(0.1);
    glFlush();
    glutMainLoop();
}
 
 
 
MainWindow::~MainWindow()
{
    delete ui;
}
[/CPPQT]
Миниатюры
Linux OpenGL 2.0  
0
 Аватар для contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
14.03.2015, 13:52  [ТС]
Цитата Сообщение от poss Посмотреть сообщение
отображение больших пикселей в opengl
Вы спрашиваете что-то? Или предлагаете Qt?
0
Заблокирован
14.03.2015, 13:58
contedevel, Предлагаю qt.
0
 Аватар для contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
14.03.2015, 17:45  [ТС]
Цитата Сообщение от poss Посмотреть сообщение
Предлагаю qt.
Спасибо, но код и так кроссплатформенный пишу, смыла тащить Qt не вижу особого, так как приложение довольно маленькое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2015, 17:45
Помогаю со студенческими работами здесь

Linux + opengl
короче, стоит на компе lunux debian gnu. Вот решил написать какую-нить поигрульку, не суть какую, но 3д. Короче, я не знаю, как стаавить...

OpenGL для Linux
Дайте пожалуйста ссылку на OpenGL для Linux.

Netbeans 8.2 OpenGL C++ Linux
Здравствуйте, возник вопрос по поводу установки библиотек glut в netbeans версии 8.2 файлы подключаемых модулей, взятых с офф форума...

Linux OpenGL без GLUT
Суть такая, требуется пример, урок, где объясняется инициализация opengl без Glut. Выбор языков: С/C++, Java, Python(желательно). ...

Драйвера с поддержкой opengl, linux calculate
Всем добрый день, подскажите у меня процессор amd ryzen 3 2200g со встроенной видеокартой, мне необходимо что бы видеокарта поддерживала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru