Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
1

Поддерживаются ли в OpenGL вертексные и индексные буфера?

29.05.2012, 07:36. Показов 3957. Ответов 40
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поддерживаются ли в OpenGL вертексные и индексные буфера? Как их юзать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2012, 07:36
Ответы с готовыми решениями:

OpenGL Вершинные буфера
Здравствуйте форумчане возник вопрос , решил разобраться с вершинными буферами вот написал код а он...

index.php (индексные файлы)
На сервере стоит wordpress 4.3.1. В настройках apache 2.2.22 не было выставлено определение...

Не генерятся индексные файлы в yii2
Залил файлы из архива, запустил init, всё прошло удачно, но при запуске...

Как создаются индексные вьюхи?
У меня есть вьюха, она очень часто используется, там 3 таблицы INNER JOIN соединены. Надо как то...

40
3420 / 1607 / 236
Регистрация: 26.02.2009
Сообщений: 7,860
Записей в блоге: 5
29.05.2012, 11:37 2
http://steps3d.narod.ru/tutori... l-VBO.html
1
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.06.2012, 10:34  [ТС] 3
snake32, а если без расширения? Тогда как?

Добавлено через 34 минуты
Для начала меня интересует обычный буфер без выкрутасов.
0
3420 / 1607 / 236
Регистрация: 26.02.2009
Сообщений: 7,860
Записей в блоге: 5
12.06.2012, 21:47 4
Цитата Сообщение от taras atavin Посмотреть сообщение
Для начала меня интересует обычный буфер без выкрутасов.
О каких выкрутасах идёт речь?
Цитата Сообщение от taras atavin Посмотреть сообщение
snake32, а если без расширения? Тогда как?
Наверое в версии 2.0 уже по дефолту идёт. Но использование там такое же как через расширение. Отличие лишь в том, что если драйвер поддерживает версию 2,0 то проверять действительно ли поддерживается VBO не нужно.
1
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.06.2012, 19:20 5
taras atavin, сегодня примерно в 17-18 часов по моск времени выложу свой код программы реализующей вершинный и индексный буферы "без выкрутасов" (практически простейший граф движок)

Добавлено через 9 часов 28 минут
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
139
140
141
142
#include <windows.h>
#include <GL\gl3.h>
#include <GL\glu.h>
#include <stdio.h>
 
 
PFNGLGENVERTEXARRAYSPROC    glGenVertexArrays           = NULL;
PFNGLBINDVERTEXARRAYPROC    glBindVertexArray           = NULL;
PFNGLGENBUFFERSPROC         glGenBuffers                = NULL;
PFNGLBINDBUFFERPROC         glBindBuffer                = NULL;
PFNGLBUFFERDATAPROC         glBufferData                = NULL;
PFNGLDELETEBUFFERSPROC      glDeleteBuffers             = NULL;
 
 
HWND        hwnd;
MSG         msg;
HGLRC       hRC;
HDC         hDC;
 
 
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
int Load_Object(int, char[]);
void Draw_Object(int);
int Load_BMP(int, char[]);
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    WNDCLASSEX wcex;
    wcex.cbSize         = sizeof(WNDCLASSEX);
    wcex.style          = CS_OWNDC;
    wcex.hbrBackground  = (HBRUSH)(0);
    wcex.lpfnWndProc    = WindowProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = "classname";
    wcex.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wcex);
    hwnd = CreateWindowEx( WS_EX_APPWINDOW, "classname", " ", WS_POPUPWINDOW, 0, 0, 800, 600, HWND_DESKTOP, NULL, hInstance, NULL );
 
    PIXELFORMATDESCRIPTOR pfd;
    int iFormat;
    hDC = GetDC (hwnd);
    ZeroMemory (&pfd, sizeof (pfd));
    pfd.nSize       = sizeof (pfd);
    pfd.nVersion    = 1;
    pfd.dwFlags     = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    pfd.iPixelType  = PFD_TYPE_RGBA;
    pfd.cColorBits  = 24;
    pfd.cDepthBits  = 16;
    pfd.iLayerType  = PFD_MAIN_PLANE;
    iFormat         = ChoosePixelFormat (hDC, &pfd);
    SetPixelFormat (hDC, iFormat, &pfd);
 
    hRC = wglCreateContext(hDC);
    wglMakeCurrent(hDC, hRC);
 
    glGenVertexArrays   = (PFNGLGENVERTEXARRAYSPROC)wglGetProcAddress("glGenVertexArrays");
    glBindVertexArray   = (PFNGLBINDVERTEXARRAYPROC)wglGetProcAddress("glBindVertexArray");
    glGenBuffers        = (PFNGLGENBUFFERSPROC)     wglGetProcAddress("glGenBuffers");
    glBindBuffer        = (PFNGLBINDBUFFERPROC)     wglGetProcAddress("glBindBuffer");
    glBufferData        = (PFNGLBUFFERDATAPROC)     wglGetProcAddress("glBufferData");
    glDeleteBuffers     = (PFNGLDELETEBUFFERSPROC)  wglGetProcAddress("glDeleteBuffers");
 
    ShowWindow(hwnd, nCmdShow);
    ShowCursor(false);
 
 
    glViewport(0, 0, 800, 600);
    glMatrixMode(GL_PROJECTION);
 
    gluPerspective(45.0f, 800.0/600.0, 0.1f, 100.0f);
    glMatrixMode(GL_MODELVIEW);
 
    glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
    glDepthFunc(GL_LEQUAL);
    glDepthRange(0.0, 1.0);
    glEnable(GL_DEPTH_TEST);
 
 
 
 
 
    int sphere  = Load_Object(0, "sphere.txt"); // ЗАГРУЖАЕМ МОДЕЛЬ
    int texture = Load_BMP(0, "texture.bmp");   // ЗАГРУЖАЕМ ТЕКСТУРУ
 
 
 
 
 
    while ( msg.message != WM_QUIT )
    {
        if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
            gluLookAt( 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0 );
 
            glClearColor(0.6f, 0.8f, 1.0f, 0.0f);
            glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 
            glEnable(GL_BLEND);
            glEnable(GL_TEXTURE_2D);
            glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
 
            glPushMatrix();
            glTranslatef( 0.0, 0.0, 5.0 );
            glRotatef( 0.0, 0.0, 0.0, 0.0 );
            glBindTexture(GL_TEXTURE_2D, texName[0]);
 
            Draw_Object(0);
 
            glPopMatrix();
 
            glDisable(GL_TEXTURE_2D);
            glDisable(GL_BLEND);
 
            glFlush();
            SwapBuffers (hDC);
        }
    }
    // УДАЛЕНИЕ БУФЕРОВ
    for (int i = 0; i < 256; i ++)
    {
        glDeleteBuffers(1, &VertexVBOID[i]);
        glDeleteBuffers(1, &IndexVBOID[i]);
    }
    wglMakeCurrent(NULL, NULL);
    wglDeleteContext(hRC);
    ReleaseDC(hwnd, hDC);
    DestroyWindow(hwnd);
    return msg.wParam;
}




Сами функции
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
///======================================================================
/// Name: WindowProc
/// Desc:
///======================================================================
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
        case WM_CLOSE:
            PostQuitMessage(0);
            break;
        case WM_KEYDOWN:
            switch (wParam)
            {
                case VK_ESCAPE:
                    PostQuitMessage(0);
                    break;
            }
            break;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}
 
 
 
 
#define BUFFER_OFFSET(i) ((void*)(i))
#define MAX_OBJECTS 512
 
// СТРУКТУРА ВЕРШИНЫ
struct MyVertex
{
    float x, y, z;      // КООРДИТАТЫ ВЕРШИНЫ
    float nx, ny, nz;   // НОРМАЛИ
    float s0, t0;       // ТЕКСТУРНЫЕ КООРДИНАТЫ
};
 
int v_count[MAX_OBJECTS] = {0};     // кол-во вершин
int i_count[MAX_OBJECTS] = {0};     // кол-во индексов
 
GLuint VertexVBOID[MAX_OBJECTS];    // буфер вершин
GLuint IndexVBOID[MAX_OBJECTS];     // буфер индексов
 
MyVertex pvertex[MAX_OBJECTS][64000];           // массив вершин
unsigned short pindices[MAX_OBJECTS][64000];    // массив индексов
 
 
///======================================================================
/// Name: Load_Object
/// Desc:
///======================================================================
int Load_Object(int id, char name[])
{
    FILE *file;
    int i = 0;
 
    file = fopen(name, "rt");
 
    fscanf(file, "%d", &v_count[id]);
    fscanf(file, "%d", &i_count[id]);
 
    for (i = 0; i < v_count[id]; i ++)
    {
        fscanf(file, "%f", &pvertex[id][i].x);
        fscanf(file, "%f", &pvertex[id][i].y);
        fscanf(file, "%f", &pvertex[id][i].z);
        fscanf(file, "%f", &pvertex[id][i].nx);
        fscanf(file, "%f", &pvertex[id][i].ny);
        fscanf(file, "%f", &pvertex[id][i].nz);
        fscanf(file, "%f", &pvertex[id][i].s0);
        fscanf(file, "%f", &pvertex[id][i].t0);
    }
 
    for (i = 0; i < 3*i_count[id]; i ++)
    {
        fscanf(file, "%u", &pindices[id][i]);
        pindices[id][i] -= 1; // ВЫЧИТАЕМ ЕДИНИЦУ ПОТОМУ ЧТО 3D MAX И ТП ХРАНЯТ ИНДЕКСЫ В МАССИВАХ НАЧИНАЮЩИХСЯ НЕ С НУЛЯ, А С ЕДИНИЦЫ
    }
    fclose(file);
 
 
    glGenBuffers(1, &VertexVBOID[id]);
    glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID[id]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(MyVertex)*v_count[id], &pvertex[id][0].x, GL_STATIC_DRAW);
 
    glGenBuffers(1, &IndexVBOID[id]);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID[id]);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned short)*3*i_count[id], pindices[id], GL_STATIC_DRAW);
 
    glBindBuffer(GL_ARRAY_BUFFER, 0);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
    return 1;
}
 
 
 
 
///======================================================================
/// Name: Draw_Object
/// Desc:
///======================================================================
void Draw_Object(int id)
{
    glPushClientAttrib  ( GL_CLIENT_VERTEX_ARRAY_BIT );
 
    glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID[id]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(MyVertex)*v_count[id], &pvertex[id][0].x, GL_STATIC_DRAW);
 
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, sizeof(MyVertex), BUFFER_OFFSET(0));
 
    glEnableClientState(GL_NORMAL_ARRAY);
    glNormalPointer(GL_FLOAT, sizeof(MyVertex), BUFFER_OFFSET(12));
 
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glTexCoordPointer(2, GL_FLOAT, sizeof(MyVertex), BUFFER_OFFSET(24));
 
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID[id]);
    glDrawElements(GL_TRIANGLES, 3*i_count[id], GL_UNSIGNED_SHORT, BUFFER_OFFSET(0));
 
    glPopClientAttrib();
}
 
 
 
 
GLuint texName[MAX_OBJECTS] = {0};
 
///=============================================================================================
/// Name: Load_BMP
/// Desc:
///=============================================================================================
int Load_BMP(int id, char filename[])
{
    BITMAPFILEHEADER    headfirst;
    BITMAPINFOHEADER    headsecond;
    FILE *fin;
 
    fin = fopen(filename, "rb");
 
    fread( &headfirst, sizeof(BITMAPFILEHEADER), 1, fin );
    fread( &headsecond, sizeof(BITMAPINFOHEADER), 1, fin );
 
    unsigned int imgWidth = headsecond.biWidth;
    unsigned int imgHeight = headsecond.biHeight;
 
    RGBQUAD pixel[imgWidth*imgHeight];
 
    for ( int j = 0; j < imgWidth*imgHeight; j+=1 )
    {
        fread( &pixel[j].rgbRed, 1, 1, fin );
        fread( &pixel[j].rgbGreen, 1, 1, fin );
        fread( &pixel[j].rgbBlue, 1, 1, fin );
        pixel[j].rgbReserved = 255;
    }
 
    fclose(fin);
 
    glGenTextures(1, &texName[id]);
    glBindTexture(GL_TEXTURE_2D, texName[id]);
 
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    
    // МИП-МАППИНГ ТЕКСТУР
    gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, imgWidth, imgHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixel);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    return 1;
}
1
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.06.2012, 19:27  [ТС] 6
Цитата Сообщение от programina Посмотреть сообщение
float x, y, z; * * *// КООРДИТАТЫ ВЕРШИНЫ
А на дабл переписать можно?
1
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.06.2012, 19:27 7
Файл модели представляет из себя
Код
4 2
-500.0 0.0 -500.0 0.0 0.0 0.0   0.0   0.0
-500.0 0.0  500.0 0.0 0.0 0.0   0.0 250.0
 500.0 0.0  500.0 0.0 0.0 0.0 250.0 250.0
 500.0 0.0 -500.0 0.0 0.0 0.0 250.0   0.0
1 2 3
3 4 1
, где:
4 - кол-во вершин
2 - кол-во треугольников = кол-во индексов/3
далее четыре строчки, каждая из которых представляет одну вершину
далее сами индексы

Саму модель можно экспортировать из 3d max'a при помощи maxscript, либо парсить какой-нибудь файл 3d модели, .3ds , .obj и т.п.
1
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.06.2012, 19:28  [ТС] 8
Цитата Сообщение от programina Посмотреть сообщение
int v_count[MAX_OBJECTS] = {0}; * * // кол-во вершин
int i_count[MAX_OBJECTS] = {0}; * * // кол-во индексов
С чем связано, что это массивы?
1
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.06.2012, 19:29 9
Цитата Сообщение от taras atavin Посмотреть сообщение
А на дабл переписать можно?
Наверно можно, не пробовала

Добавлено через 59 секунд
Цитата Сообщение от taras atavin Посмотреть сообщение
С чем связано, что это массивы?
да, если вам нужно не одну модель загружать, а несколько
1
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.06.2012, 19:31  [ТС] 10
Цитата Сообщение от programina Посмотреть сообщение
for (i = 0; i < 3*i_count[id]; i ++)
* * {
* * * * fscanf(file, "%u", &pindices[id][i]);
* * * * pindices[id][i] -= 1; // ВЫЧИТАЕМ ЕДИНИЦУ ПОТОМУ ЧТО 3D MAX И ТП ХРАНЯТ ИНДЕКСЫ В МАССИВАХ НАЧИНАЮЩИХСЯ НЕ С НУЛЯ, А С ЕДИНИЦЫ
* * }
* * fclose(file);
Я хотел начать с процедурной, а не рисованной модели.
1
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.06.2012, 19:35 11
Цитата Сообщение от taras atavin Посмотреть сообщение
Я хотел начать с процедурной, а не рисованной модели.
Вы имеете в виду массивы вершин и индексов внутри программы?
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.06.2012, 19:47  [ТС] 12
Ну да. Вертексы готовит функция, вызываемая относительно редко, возможно однократно, а другая функция при каждом рендеринге хватает весь буфер и исполняет на экран. Но за координаты вертексов отвечает не худодник, а код и обе функции в одной программе, на диска модель даже не сохраняется. Разумеется, рисованные модели тоже будут и они будут грузиться именно с файлов, но это уже второй этап. Ладно, формат я понял, буду разбираться с синтаксисом библиотеки.
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.06.2012, 20:43 13
Цитата Сообщение от taras atavin Посмотреть сообщение
Но за координаты вертексов отвечает не худодник, а код и обе функции в одной программе
Вы случайно не анимацию затеваете?
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.06.2012, 09:59  [ТС] 14
А разве игру можно сделать в статике? Но сначала я хочу неподвижную сцену с координатами вертексов по уравнению.

Добавлено через 2 часа 55 минут
Цитата Сообщение от programina Посмотреть сообщение
int Load_Object(int id, char name[])
Что возвращает эта функция?
0
3420 / 1607 / 236
Регистрация: 26.02.2009
Сообщений: 7,860
Записей в блоге: 5
14.06.2012, 10:03 15
Цитата Сообщение от taras atavin Посмотреть сообщение
Что возвращает эта функция?
Цитата Сообщение от programina Посмотреть сообщение
return 1;
Судя по коду только единичку
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.06.2012, 10:48  [ТС] 16
Цитата Сообщение от snake32 Посмотреть сообщение
Судя по коду только единичку
Тогда зачем?
0
3420 / 1607 / 236
Регистрация: 26.02.2009
Сообщений: 7,860
Записей в блоге: 5
14.06.2012, 11:07 17
Цитата Сообщение от taras atavin Посмотреть сообщение
Тогда зачем?
Возможность доработать функцию не переписывая остальной код использующую эту ф-ию. Например, если файл не найден или глючный, то возвращается 0. Своего рода заплатка, для работоспособности всего кода на достоверных проверенных используемых файлов.
1
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.06.2012, 11:09 18
Цитата Сообщение от taras atavin Посмотреть сообщение
Тогда зачем?
Не знаю, просто сделала на будущее если понадобится узнать выполнилась функция или нет:
C++
1
2
3
4
if (Load_Object(0, "name.file")!=1)
{
    fprinrf(out_file, "ошибка загрузки!");
}
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.06.2012, 11:16  [ТС] 19
Вот такая гога:
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'void OpenGLRenderView()':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|675|error: 'GL_ARRAY_BUFFER' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|675|error: 'glBindBuffer' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|676|error: 'GL_STATIC_DRAW' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|676|error: 'glBufferData' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|679|error: 'BUFFER_OFFSET' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|687|error: 'GL_ELEMENT_ARRAY_BUFFER' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'LRESULT WindowProcedureWindowView(HWND__*, UINT, WPARAM, LPARAM)':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|765|error: 'glDeleteBuffers' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'LRESULT WindowProcedureWindowChart(HWND__*, UINT, WPARAM, LPARAM)':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|783|warning: unused variable 'BufferContext'|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|785|warning: unused variable 'Buffer'|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'void CreateEarh()':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1011|error: 'glGenBuffers' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1012|error: 'GL_ARRAY_BUFFER' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1012|error: 'VertexBuffer' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1012|error: 'glBindBuffer' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1013|error: 'GL_STATIC_DRAW' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1013|error: 'glBufferData' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1016|error: 'GL_ELEMENT_ARRAY_BUFFER' was not declared in this scope|
||=== Build finished: 14 errors, 2 warnings ===|
Добавлено через 3 минуты
Заменил на gl3.h,
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|11|error: GL\gl3.h: No such file or directory|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'void OpenGLRenderView()':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|675|error: 'GL_ARRAY_BUFFER' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|675|error: 'glBindBuffer' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|676|error: 'GL_STATIC_DRAW' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|676|error: 'glBufferData' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|679|error: 'BUFFER_OFFSET' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|687|error: 'GL_ELEMENT_ARRAY_BUFFER' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'LRESULT WindowProcedureWindowView(HWND__*, UINT, WPARAM, LPARAM)':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|765|error: 'glDeleteBuffers' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'LRESULT WindowProcedureWindowChart(HWND__*, UINT, WPARAM, LPARAM)':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|783|warning: unused variable 'BufferContext'|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|785|warning: unused variable 'Buffer'|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp||In function 'void CreateEarh()':|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1011|error: 'glGenBuffers' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1012|error: 'GL_ARRAY_BUFFER' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1012|error: 'VertexBuffer' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1012|error: 'glBindBuffer' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1013|error: 'GL_STATIC_DRAW' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1013|error: 'glBufferData' was not declared in this scope|
C:\tsserver\Projects\cpp\codeblocks\SeaJackals\SeaJackals.cpp|1016|error: 'GL_ELEMENT_ARRAY_BUFFER' was not declared in this scope|
||=== Build finished: 15 errors, 2 warnings ===|
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.06.2012, 11:19 20
taras atavin подключали gl3.h?
0
14.06.2012, 11:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2012, 11:19
Помогаю со студенческими работами здесь

Менеджер обновлений не может загрузить индексные файлы
При запуске update-manager вылазит ошибка и в результате не могу поставить обновления. Интернет...

Описать процедуру SortIndex(A,N,I) и создать индексные массивы
Описать процедуру SortIndex(A,N,I), формулирующую для вещественного массива A размера N индексный...

Создать папку с именем из буфера и копировать файлы используя инфу буфера как маску
Может пригодится ... :coffee: 1) Создаст папку (по вашему пути) имя папки будет взято из буфера...

Поддерживаются инструкции SSE?
Написать консольную программу на языке С ++, которая выводит информацию о некоторых...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru