Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
gres8
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 61
1

SDL2 - Одновременное использования OpenGL и render

04.03.2018, 12:20. Просмотров 302. Ответов 4
Метки нет (Все метки)

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
#include <SDL2/SDL.h>
#include <SDL2/SDL_main.h>
#include <SDL2/SDL_render.h>
#include <SDL2/SDL_opengl.h>
 
int main(int argc, char **argv)
{
SDL_Init( SDL_INIT_VIDEO );
SDL_Window * win = SDL_CreateWindow( "test", 20, 20, 640, 480, SDL_WINDOW_OPENGL);
SDL_GLContext glcontext = SDL_GL_CreateContext(win);
int oglIdx = -1;
int nRD = SDL_GetNumRenderDrivers();
for(int i=0; i<nRD; i++)
{
SDL_RendererInfo info;
if(!SDL_GetRenderDriverInfo(i, &info))
{
if(!strcmp(info.name, "opengl")){oglIdx = i;}
}
}
SDL_Renderer * renderer = SDL_CreateRenderer(win, oglIdx, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
glMatrixMode(GL_PROJECTION|GL_MODELVIEW);
 
 
SDL_Event event;
float angl;
 
   float colorR;
   float colorG ;
   float colorB;
 
bool quit=false;
while(!quit)
{
while ( SDL_PollEvent(&event) );
glClearColor(0,0,0,0);
 
glClear(GL_COLOR_BUFFER_BIT);
glOrtho(320, 320, 240, -240, 0, -1);
 
   glLoadIdentity();
 
   glPushMatrix();
 
   SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
   int ww = 640;
   int hh = 480;
 
   colorR += 0.01;
   colorG += 0.02;
   colorB += 0.03;
 
   if (colorR >1 )  colorR = 0;
   if (colorG >1 )  colorG = 0;
   if (colorB >1 )  colorB = 0;
 
   for (int x = 0; x <= ww; x +=5)
   for (int y = 0; y <= hh; y +=5)
   {
            glColor3f( colorR, colorG, colorB);
            SDL_RenderDrawLine(renderer, 0, 0, x, y);
   }
 
   glPopMatrix();
   angl += 1;
 
 
 
 
 
   glTranslatef(640/2, 480/2, 0);
 
   glRotatef(angl,0.0,0.0,1.0);
 
    float x = 0.0, y = 0.0;
 
    glBegin(GL_TRIANGLES);
        glColor3f(1.0,0.0,0.0);        glVertex2f(x,      y+90.0);
        glColor3f(0.0,1.0,0.0);        glVertex2f(x+90.0, y-90.0);
        glColor3f(0.0,0.0,1.0);        glVertex2f(x-90.0, y-90.0);
    glEnd();
 
 
SDL_GL_SwapWindow(win);
 
SDL_Delay(16);
 
}
 
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2018, 12:20
Ответы с готовыми решениями:

SDL2 opengl
Не могу запустить OpenGL на SDL2 #pragma comment(lib, &quot;./lib/SDL2main.lib&quot;) #pragma...

Вертикальная синхронизация sdl2 + opengl
По умолчанию не включена. Как включить?

Одновременное отображение граней и текстур в OpenGL
Доброго времени суток. Необходимо отрендерить трехмерный куб с наложенной на него текстурой и...

OpenGL Linux без использования GLUT
В любимом институте запретили использовать GLUT , что бы мы &quot;поняли&quot; как OpenGL прикручивается....

OpenGL - условия использования для создания коммерческих продуктов
Доброго времени суток!Я хотел бы узнать: 1.Бесплатна ли библиотека OpenGL? 2.Могу ли я бесплатно...

4
vxg
Модератор
3292 / 2086 / 330
Регистрация: 13.01.2012
Сообщений: 8,118
04.03.2018, 13:08 2
gres8, вопрос тут есть?
0
gres8
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 61
10.03.2018, 13:55  [ТС] 3
Вопрос в том код работает но если прсто добавить float xx,yy; xx++;yy++;

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
#include <SDL2/SDL.h>
#include <SDL2/SDL_main.h>
#include <SDL2/SDL_render.h>
#include <SDL2/SDL_opengl.h>
 
int main(int argc, char **argv)
{
 
    float xx,yy;
 
 
    SDL_Init( SDL_INIT_VIDEO );
    SDL_Window * win = SDL_CreateWindow( "test", 20, 20, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
    SDL_GLContext glcontext = SDL_GL_CreateContext(win);
 
    int oglIdx = -1;
    int nRD = SDL_GetNumRenderDrivers();
 
    for(int i=0; i<nRD; i++)
        {
        SDL_RendererInfo info;
        if(!SDL_GetRenderDriverInfo(i, &info))
                {
                if(!strcmp(info.name, "opengl")){oglIdx = i;}
                }
        }
 
 
    SDL_Renderer * renderer = SDL_CreateRenderer(win, oglIdx, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    glMatrixMode(GL_PROJECTION|GL_MODELVIEW);
 
 
    SDL_Event event;
    float angl;
    float colorR, colorG, colorB;
 
    bool quit=false;
    while(!quit)
    {
    while ( SDL_PollEvent(&event) );
    glClearColor(0,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT);
    glOrtho(320, 320, 240, -240, 0, -1);
 
    glLoadIdentity();
 
    glPushMatrix();
 
       SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
       int ww = 640;
       int hh = 480;
 
       colorR += 0.01;  if (colorR >1 )  colorR = 0;
       colorG += 0.02;  if (colorG >1 )  colorG = 0;
       colorB += 0.03;  if (colorB >1 )  colorB = 0;
 
 
 
 
 
       for (int x = 0; x <= ww; x +=5)
       for (int y = 0; y <= hh; y +=5)
           {
                    glColor3f( colorR, colorG, colorB);
                    SDL_RenderDrawLine(renderer, 0, 0, x, y);
           }
 
    glPopMatrix();
 
 
 
    xx++;yy++;
 
    angl += 1;
 
    glTranslatef(640/2, 480/2, 0);
    glRotatef(angl,0.0,0.0,1.0);
 
   float x = 0.0, y = 0.0;
 
   glBegin(GL_TRIANGLES);
        glColor3f(1.0,0.0,0.0);        glVertex2f(x,      y+90.0);
        glColor3f(0.0,1.0,0.0);        glVertex2f(x+90.0, y-90.0);
        glColor3f(0.0,0.0,1.0);        glVertex2f(x-90.0, y-90.0);
   glEnd();
 
 
 
 
SDL_GL_SwapWindow(win);
 
SDL_Delay(16);  //60FPS
 
}
[FLEFT][FLEFT][FRIGHT][SUP][FLEFT][TABLE][/TABLE][/FLEFT][/SUP][/FRIGHT][/FLEFT][/FLEFT]
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}
строки 9 и 73
тот все не работает
не могу объяснить
0
mrden777
5 / 13 / 12
Регистрация: 20.03.2018
Сообщений: 405
Завершенные тесты: 2
28.03.2018, 13:03 4
А где брать
#include <SDL2/SDL.h>
#include <SDL2/SDL_main.h>
#include <SDL2/SDL_render.h>
#include <SDL2/SDL_opengl.h>
0
Antikl
с++
347 / 330 / 163
Регистрация: 15.07.2015
Сообщений: 1,743
Завершенные тесты: 6
28.03.2018, 13:10 5
https://wiki.libsdl.org/
0
28.03.2018, 13:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2018, 13:10

Нужно ли создавать новый Render для каждого нового объекта (SDL2)?
Есть окно сделанное с помощью SDL2 и класс объекта. Нужно нарисовать множество таких объектов,...

Изменение размера окна приводит к чёрному экрану, SDL2 + OpenGL
Здравствуйте! Собственно, вот такая проблема. Есть некоторое приложение, рисующее несколько...

ATtiny13A одновременное использования ШИМ и компаратора
У меня вопросик. Могу ли я использовать ШИМ на ноге PB0 и одновременно использовать компаратор (я...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru