Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 104

OpenGL: ошибка в библиотеке glut.h

27.10.2013, 14:33. Показов 2849. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скачал исходник проекта для билдера (но билдером не открывается ... нет файла проекта) с openGL-ем: там в окошке рисуется красная сфера (она вращается).

Решил повторить в точности эту программу. Создал новый проект в билдере. Скопировал в рабочую папку библиотеку glut.h и прочие. Скопировал в проект содержимое файлов .cpp

C++
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//---------------------------------------------------------------------------
 
#include <vcl.h>
 
//#include <gl\gl.h>                // Заголовочные файлы для библиотеки OpenGL32
//#include <gl\glu.h>              // Заголовочные файлы для библиотеки GLu32
//#include <gl\glaux.h>
#include <gl\glut.h>
 
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
  HGLRC ghRC;
  HDC   ghDC;
  void Draw();
 
 
 BOOL bSetupPixelFormat(HDC hdc)
      {
 PIXELFORMATDESCRIPTOR pfd, *ppfd;
    int pixelformat;
 
    ppfd = &pfd;
 
    ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
    ppfd->nVersion = 1;
    ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    ppfd->dwLayerMask = PFD_MAIN_PLANE;
    ppfd->iPixelType = PFD_TYPE_RGBA;//формат указания цвета. Может принимать значения
    // PFD_TYPE_RGBA (цвет указывается четырьмя параметрами
    //RGBA - красный, зленный, синий и альфа) и PFD_TYPE_COLORINDEX (цвет указывается
    // индексом в палитре).
    ppfd->cColorBits = 16;//глубина цвета
    ppfd->cDepthBits = 16;//размер буфера глубины (Z-Buffer)
 
    ppfd->cAccumBits = 0;
    ppfd->cStencilBits = 0;//размер буфера трафарета (мы его пока не используем)
 
    //ЧузПикселФормат подбирает формат пикселей, максимально удовлетворяющий нашим требованиям,
    //и возвращает его дескриптор, а SetPixelFormat() устанавливает его в контексте устройства
    // (dc).
    if ((pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0)
    {
        MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK);
        return FALSE;
    }
    if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE)
    {
        MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK);
        return FALSE;
    }
    return TRUE;
      }
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
  glViewport( 0, 0, Width, Height );
  //glViewport(0,0,300,300);
  glMatrixMode( GL_PROJECTION );
  glLoadIdentity();
  glOrtho(-5,5, -5,5, 2,12);
  gluLookAt(0,0,5, 0,0,0, 0,1,0);
  glMatrixMode( GL_MODELVIEW );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
     {
  ghDC = GetDC(Handle);//??
  if (!bSetupPixelFormat(ghDC))
      Close();
  //После того как в контексте устройства установлен формат пикселей, нужно создать
  // контекст воспроизведения (Rendering Context) для этого в OpenGL определены
  //следующие функции:
  //HGLRC wglCreateContext(HDC hdc);
  //BOOL wglMakeCurrent(HDC hdc, HGLRC hglrc);
 
  ghRC = wglCreateContext(ghDC);
  wglMakeCurrent(ghDC, ghRC);
 
  glClearColor(0.0, 0.0, 0.0, 0.0);
 
  FormResize(Sender);//??
 
  glEnable(GL_COLOR_MATERIAL);
  glEnable(GL_DEPTH_TEST);
 
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
    float p[4]={3,3,3,1},
          d[3]={-1,-1,-3};
  glLightfv(GL_LIGHT0,GL_POSITION,p);
  glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,d);
      }
}
//-----------------------------function-------------------------------------------
void Draw()
      {
  glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
 
  GLUquadricObj *quadObj;
  quadObj=gluNewQuadric();
 
  gluQuadricDrawStyle(quadObj, GLU_FILL);
  glColor3f(1,0,0);
  gluSphere(quadObj, 2,10,10);
    glRotatef(3, 0,1,0);
  gluDeleteQuadric(quadObj);
 
  SwapBuffers(ghDC);
      }
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(ghRC)
     {
          wglMakeCurrent(ghDC,0);
          wglDeleteContext(ghRC);
     }
          if(ghDC)
          ReleaseDC(Handle, ghDC);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Draw();
}
//---------------------------------------------------------------------------
и .h

C++
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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TTimer *Timer1;
    void __fastcall FormResize(TObject *Sender);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall Timer1Timer(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
При компиляции выдает ошибку:

[C++ Error] glut.h(146): E2337 Only one of a set of overloaded functions can be "C"

Выделяет красным в файле glut.h строчку

C++
1
extern _CRTIMP void __cdecl exit(int);
Вот скрин:

http://www.fotolink.su/v.php?i... 8cb2331a75

В конце концов должно получиться следующее:

http://www.fotolink.su/del.php... 26d18b15b5
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2013, 14:33
Ответы с готовыми решениями:

OpenGL glut.h
Помогите настроить с++ builder библиотеку glut.h я скачал файлы с официального сайта opengl32.dll glut32.dll glu32.dll glut32.dll ...

Ошибка GLUT (OpenGL)
Переписывал с видеоурока код, чем больше писал, тем больше ошибок такого типа: &quot;Game1.exe&quot; (Win32). Загружено...

Ubuntu + OpenGL(GLUT) = ошибка
Господа, крайне нужна ваша помощь. Взялся программировать opengl на g++, установил glut, все как положено. Одно НО, при компиляции...

10
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.10.2013, 14:53
Посмотри я где-то постил в темах по прикрутке glut к Builder.
0
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 104
27.10.2013, 19:43  [ТС]
Нашел ту ветку:
RAD Studio XE2 и OpenGL
Сейчас попробую сделать, как там ^ ^
0
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 104
05.11.2013, 00:03  [ТС]
=) ничего так и не получилось=)
0
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 104
08.11.2013, 01:02  [ТС]
Я перепробовал уже примеров 10 - ничего не рисуется или не компилится ... . Нет уже сил и времени чего-то непонятное делать. Может кто-нибудь выложить билдеровский проект (с формой или без - лиж бы в окошке выводилась картинка =), и я мог бы там отрисовать черта лысого хоть по пиксельно) - именно проект, а не код (чтобы его можно было взять да открыть через open project ... )? Пожалуйста.

Добавлено через 7 минут
Есть еще идея ... мне надо рисовать в окошке - уже не важно в каком. Мож сделать отдельную прогу, например, уже в вижуале. Там замутить этот опенЖИЭЛЬ рендеринг. С помощью программы, написанной в билдере запускать ту, что написана в вижуале, и каким-то образом передавать данные между ними. Опен ЖИЭЛЬ нарисует картинку - ее запоминаем, отправляем билдеровской проге, отрисовываем в Image и все готово!

Как такая идея? Как лучше передавать картинку между приложениями?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
08.11.2013, 09:23
Цитата Сообщение от Gendalf147 Посмотреть сообщение
Может кто-нибудь выложить билдеровский проект
Вот вам совершенно дьявольский кусок проекта, который балуется с некоторыми параметрами отрисовки вращающейся сферы. Короче издевательство над уроками NeHe.
Скачать без смс: SatanOpenGLSphere.rar

Цитата Сообщение от Gendalf147 Посмотреть сообщение
Как такая идея?
Хреново.
Цитата Сообщение от Gendalf147 Посмотреть сообщение
Как лучше передавать картинку между приложениями?
Bitmap наверное.
0
 Аватар для name?
201 / 172 / 52
Регистрация: 01.06.2010
Сообщений: 371
08.11.2013, 10:18
всего-то нужно было поискать... тыц
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.11.2013, 14:42
Цитата Сообщение от Gendalf147 Посмотреть сообщение
Нашел ту ветку:
RAD Studio XE2 и OpenGL
Сейчас попробую сделать, как там ^ ^
О_у там исходники проекта и указания что пробовать ?
0
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 104
08.11.2013, 23:54  [ТС]
Пробовал ... ведь не помогло же. Сейчас копаюсь в "совершенно дьявольском куске проекта" ... удаляю элементы ActiveDAQ, которых надо подгрузить (а какие хз) ... иначе не запустить. Сейчас все лишнее вырву из проекта ...

Кстати, у меня билдер 2006-й и он еще портабельный!

Добавлено через 1 час 6 минут
До проверки работоспособности не дошло дело ...

Добавлено через 3 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
О_у там исходники проекта и указания что пробовать ?
оу а там не Builder 6
0
09.11.2013, 00:03

Не по теме:

Цитата Сообщение от Gendalf147 Посмотреть сообщение
оу а там не Builder 6
И главное не BorlandC v3 ...

0
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 104
09.11.2013, 14:39  [ТС]
Что же поделаешь ... у всех все работает почему-то, а вот у меня нет. *****

Добавлено через 13 часов 52 минуты
При очередной попытке вышло следующее:

[Linker Error] Unresolved external 'TForm1::' referenced from D:\TEST1\PROJECT1.OBJ

код тот, который находится по ссылке, мол который я должен найти...

Добавлено через 37 секунд
(7й пост)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2013, 14:39
Помогаю со студенческими работами здесь

Ошибка при запуске: Точка входа в процедуру glRotatef не найдена в библиотеке DLL C:\Windows\System32\glut.dll
Нужна помощь что уже только не делал, все равно не работает. Пытаюсь создать игру змейку по примеру из интернета. Написал окно но не...

OpenGL - VS2008 Инициализация OpenGL (Glut)
Правильно ли я написал код для выведения 3d изображения на экран? Вот пару недель наверно искал метод - можно ли окно как то создать без...

C++ и opengl(glut)
Всем доброго времени суток, решил разобраться с opengl на с++, пользую ms express c++ 2010, установил glut, написал следующий код: ...

OpenGL, Glut
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;GL/glut.h&gt; const int SER_COUNT = 240; int r() { int r = 0; for (int i =...

OpenGL, библиотека glut
Уважаемые программисты где скачать библиотеку OpenGL? glut.h


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
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
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru