Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: GTK+ и OpenGL  (Прочитано 3286 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nattfodd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
GTK+ и OpenGL
« : 11 Июля 2010, 15:19:20 »
Хочу порисовать всякие штуки в OpenGL, но вот беда. О программировании с OpenGL под linux написано только с точки зрения Qt через соотв. виджет. Вычитал , что есть какой-то виджет-аналог под GTK+ - gtkglextmm (для c++).

В системе установлены SDL (надстройка над openGL) и libgtkglextmm-x11-1.2-0.

Инклюды GL находит, и вот такой код собирается нормально:
Цитировать
#include "GL/gl.h"
#include "GL/glu.h"
#include "gtk/gtk.h"
#include "SDL/SDL.h"

int main(int argc, char ** argv)
{
   GtkWidget* window;
   gtk_init(&argc, &argv);
   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   
   gtk_window_set_title(GTK_WINDOW(window), "OpenGL Test 01");
   gtk_window_set_default_size (GTK_WINDOW(window),640,480);
   gtk_widget_show(window);
   
/*
   glClearColor (0.0, 0.0, 0.0, 0.0);
   glClear (GL_COLOR_BUFFER_BIT);
   glColor3f (1.0, 1.0, 1.0);
   glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
   glBegin(GL_POLYGON);
      glVertex3f (0.25, 0.25, 0.0);
      glVertex3f (0.75, 0.25, 0.0);
      glVertex3f (0.75, 0.75, 0.0);
      glVertex3f (0.25, 0.75, 0.0);
   glEnd();
   glFlush();
*/
   gtk_main();
   return 0;
}

но если раскомментировать функции openGL - ругается, что не знает таких слов.

Вобщем вопрос: как связать воедино SDL, openGL и GTK+? Хотелось бы посмотреть на рабочий пример такой программки. Заранее спасибо.

PS. Вот что я гуглил - тем, кто тоже интересуется openGL:
http://glprogramming.com/red/chapter01.html
http://www.linuxcenter.ru/lib/books/opengl/_index
http://plg.lrn.ru/doc/gl-linux/
http://pmg.org.ru/nehe/index.html
« Последнее редактирование: 11 Июля 2010, 15:22:22 от Nattfodd »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #1 : 11 Июля 2010, 15:24:36 »
ошибки в студию и купи нормальный учебник по Си

#include <GL/gl.h>
#include <GL/glu.h>
#include <gtk/gtk.h>
#include <SDL/SDL.h>

сдается мне там ошибки линковки.

Оффлайн Nattfodd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #2 : 11 Июля 2010, 15:45:23 »
Тут каждый на форуме считает своим долгом указать на недостаточные познания собеседника в си? Боюсь разочаровать, но C++ я знаю прекрасно.

Я пока еще не совсем понимаю как работают директивы и параметры для компиляторов в линухе, поэтому для меня не очевидно, почему при указании gl.h который есть в системе и который нормально "съедается" при компиляции, функции из этого файла он в упор не видит.

но если раскомментировать функции openGL - ругается, что не знает таких слов
(Нажмите, чтобы показать/скрыть)

Но все равно спасибо за ответ.

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #3 : 11 Июля 2010, 16:31:33 »
g++ -Wall -o "opengl01" "opengl01.cpp" `pkg-config --cflags gtk+-2.0 --libs gtk+-2.0 libglade-2.0`Либы gtk и glade, а OptnGL и SDL?
ИМХО если хочеш порисовать то достаточно SDL.
xUbuntu 12.04

Оффлайн Nattfodd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #4 : 11 Июля 2010, 17:57:16 »
g++ -Wall -o "opengl01" "opengl01.cpp" `pkg-config --cflags gtk+-2.0 --libs gtk+-2.0 libglade-2.0`Либы gtk и glade, а OptnGL и SDL?
ИМХО если хочеш порисовать то достаточно SDL.
да похоже что тут косяк ) а можно пример, как они называются?

для gcc это -lGL, а для g++ я не нашел название либы. да и в списке пакетов конкретно openGL не видел, куча всяких пакетов для отдельных игр.. может плохо искал, не знаю.

зы. ну вообще хочу пока просто изучить openGL, но в планах какая-нибудь простенькая 3д игрушка.
ззы. а что насчет gtkglextmm?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #5 : 11 Июля 2010, 19:47:06 »
Цитировать
для gcc это -lGL, а для g++ я не нашел название либы.
Разницы нет. g++ мало чем отличается от gcc. Они оба не являются компиляторами, а только интерфейсными утилитами запускающими собственно препроцессор, компилятор и линкер. Первый делает всё то же самое что и последний, за исключением добавления некоторых флагов. Можно C++ программу собирать и с помощью gcc, но тогда нужно при линковке явно указать -lstdc++ (если конечно пользуешься STL).

Оффлайн Nattfodd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #6 : 11 Июля 2010, 20:04:12 »
Разницы нет. g++ мало чем отличается от gcc. Они оба не являются компиляторами, а только интерфейсными утилитами запускающими собственно препроцессор, компилятор и линкер. Первый делает всё то же самое что и последний, за исключением добавления некоторых флагов. Можно C++ программу собирать и с помощью gcc, но тогда нужно при линковке явно указать -lstdc++ (если конечно пользуешься STL).
вот, спасибо большое! а то меня конкретно запутало, почему в большинстве источников при g++ либы подключаются через `pkg-config --cflags gtk+-2.0 --libs gtk+-2.0 libglade-2.0`, а в gcc - через -l.

Теперь просто дописал в конец команды -lGL - пашет  :).

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #7 : 11 Июля 2010, 20:47:40 »
Цитировать
вот, спасибо большое! а то меня конкретно запутало, почему в большинстве источников при g++ либы подключаются через `pkg-config --cflags gtk+-2.0 --libs gtk+-2.0 libglade-2.0`, а в gcc - через -l.
pkg-config это просто некое подобие баз данных флагов компиляторов необходимых для использования библиотек. Она может нормально использоваться как с gcc, так и с g++

Цитировать
зы. ну вообще хочу пока просто изучить openGL, но в планах какая-нибудь простенькая 3д игрушка.
Есть предложение.. Пресоединяйся ко мне :) http://mahjong-night.googlecode.com Там правда Qt, но эту сторону вопроса я могу полность взять на себя.

Я там на этой неделе работал над парсером *.obj файлов моделей, сегодня добью всё кроме подгрузки внешних описаний материалов. Уже научился модели в Blender'е рисовать и экспортировать в этот формат. Следующий шаг это расстановка фишек на столе. Вот там будет чистый OpenGL ты сможешь освоить его прямо в ходе работы над этой частью, а потом уже заняться чем-то своим.

В качестве конфетки за помощь могу переделать свой парсер *.obj файлов выкусив зависимости от Qt и отдать под любой желаемой лицензией (хоть Public Domain). Плюс у тебя, возможно, появится практический опыт рисования моделей в Blender.

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #8 : 11 Июля 2010, 21:40:14 »
Цитировать
зы. ну вообще хочу пока просто изучить openGL, но в планах какая-нибудь простенькая 3д игрушка.
Для OpenGL впринципе ни GTK, ни QT, ни SDL не нужены, но SDL гораздо проще, а уж тем более для игрушки.
Самое простое -
http://plg.lrn.ru/doc/sdl/lesson6.html
xUbuntu 12.04

Оффлайн Nattfodd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #9 : 12 Июля 2010, 01:14:02 »
Есть предложение.. Присоединяйся ко мне :) http://mahjong-night.googlecode.com
Спасибо за интересное предложение, но для начала мне надо разобраться с азами, и тогда я буду в состоянии вникать в чужой код на уже знакомом API %)

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: GTK+ и OpenGL
« Ответ #10 : 12 Июля 2010, 15:01:01 »
Цитировать
Цитировать
Есть предложение.. Присоединяйся ко мне :) http://mahjong-night.googlecode.com
Спасибо за интересное предложение, но для начала мне надо разобраться с азами, и тогда я буду в состоянии вникать в чужой код на уже знакомом API %)
А у меня сейчас такая ситуация, что мне именно базовую часть нужно сделать: проинициализировать все нужные буферы и расширения OpenGL, поставить камеру куда положено, включить свет, нарисовать какой-нибудь прямоугольник и проверить, что всё правильно сделанно. Тем временем я сделаю загрузку модели и нужно будет расположить 144 фишки на столе правильным образом.

Собственно это первые две или три главы The Red Book, как раз именно приложения делающие нечто подобное и пишутся при освоении OpenGL. Я тебе просто предлагаю писать эти вещи не на наколенных примерах, которые потом будут пылиться в какой-нибудь папке tests за не надобностью, а в рельном проекте. В любом случае я буду просматривать твои патчи и давать обратную связь, это тоже поможет быстрее осваивать сей API. Я конечно не гуру в OpenGL но все вещи которые мне нужны для этого проекта я уже опробовал на наколенных примерах и представляю что и как нужно делать.

 

Страница сгенерирована за 0.036 секунд. Запросов: 25.