Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33

Проблемы с SDL

21.05.2013, 12:54. Показов 683. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Столкнулся с некоторыми проблемами связанными с SDL. В программе выводит окно а экран закрашивает его в черный как я и указал но дальше уходит в себя и ни на что не реагирует. Укажите, пожалуйста, где ошибка.
Код:
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
#include <iostream>
#include <GL/GLAux.h>
#pragma comment (lib, "opengl32.lib")
#pragma comment (lib, "glut32.lib")
#include <Box2D\Box2D.h>
#include <SDL\include\SDL.h>
 
 
const int WIDTH=640;
const int HEIGHT=480;
const float M2P=160.0;
const float P2M=1/M2P;
b2World* world;
 
b2Body*addRect(int x,int y,int w,int h, bool dyn)
{
    b2BodyDef bodydef;
    //указываем позицю, но не забываем что бокс2д измеряет все в метрах а мы в пискселях, поэтому нужно конвертировать
    bodydef.position.Set(x*P2M,y*P2M);
 
    // определяем статика или диниамика, статика недвигается, динамика двигается и влияет на друге объект, есть ещё кинестетика
    if (dyn)
        bodydef.type=b2_dynamicBody;
    b2Body* body=world->CreateBody(&bodydef);
 
    b2PolygonShape shape;
    shape.SetAsBox(P2M*w/2,P2M*h/2);
    b2FixtureDef fixturedef;
    fixturedef.shape=&shape;
    fixturedef.density=1.0; //плотность
    body->CreateFixture(&fixturedef);
 
    return body;
}
 
void init ()
{
    glMatrixMode(GL_PROJECTION);
    glOrtho(0,WIDTH,HEIGHT,0,-1,1);
    glMatrixMode(GL_MODELVIEW);
    glClearColor(0,0,0,0);
    world=new b2World(b2Vec2(0.00f,9.81f)); //ура мы создали на мир
    addRect(WIDTH/2,HEIGHT-50,WIDTH,30,false);
}
 
void drawSquare(b2Vec2* points,b2Vec2 center,float angle)
{
    glColor3f(1,1,10);
    glPushMatrix();
     glTranslated(center.x*M2P,center.y*M2P,0);
     glRotatef(angle*180.00f/3.14f,0,0,1);
     glBegin(GL_QUADS);
      for(int i=0;i<4;i++)
          glVertex2f(points[i].x*M2P,points[i].y*M2P);
    glPopMatrix();
}
 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
    b2Body* tmp=world->GetBodyList();
    b2Vec2 points[4];
    while (tmp)
    {
        for (int i=0; i<4;i++)
            points[i]=((b2PolygonShape*)tmp->GetFixtureList()->GetShape())->GetVertex(i);
 
        drawSquare(points,tmp->GetWorldCenter(),tmp->GetAngle());
        tmp=tmp->GetNext();
    }
}
 
void Main(int argc,char** argv)
{
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_SetVideoMode(640,480,32,SDL_OPENGL);
    Uint32 start;
    SDL_Event event;
    bool running=true;
    init();
    while (running)
    {
        start=SDL_GetTicks();
        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
                case SDL_QUIT:
                    running=false;
                    break;
                case SDL_KEYDOWN:
                    switch (event.key.keysym.sym)
                    {
                    case SDLK_ESCAPE:
                        running=false;
                        break;
                    }
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    addRect(event.button.x,event.button.y,20,20,true);
                    break;
            }
        }
        display();
        world->Step(0.016f,5,5);
        SDL_GL_SwapBuffers();
        if (1000.0/30-(SDL_GetTicks()-start))
            SDL_Delay(1000/30-(SDL_GetTicks()-start));
        }
    SDL_Quit();
}
Добавлено через 1 час 51 минуту
Я приношу свои извинения. Разобрался. Если кто нибудь столкнется гуглите как установить sdl под visual studio. я по зелености установил на mingv
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2013, 12:54
Ответы с готовыми решениями:

Проблемы с SDL. Не видить некоторые файлы
Добрый день. Начал писать програму через SDL и у меня ошибки повылазили. Код я взял на тоториале оф сайте. И хоть убейте не пойму что у...

Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2?
В официальной доке как-то скомкано написано. При инициализации SDL TTF и при загрузке шрифта ошибок нет. Но текст на экране не...

C++ SDL
Всем привет! Работал я значи в SDL, а потом что-то нажалось ил не нажалось и вообщем теперь, при компиляции любого(работающего,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.05.2013, 12:54
Помогаю со студенческими работами здесь

SDL 2.0
Меня очень заинтересовала библиотека SDL. Расскажите пожалуйста, в чём её особенность, для каких целей она используется, какие у неё...

SDL
помогите пожалуйста пробую разобраться с SDL /*This source code copyrighted by Lazy Foo' Productions (2004-2019) and may not be...

QT Creator + SDL
Здравствуйте. Установил QT Creator, настроил, все работает. Для работы с SDL пишу такой код: #include &quot;SDL/SDL.h&quot; int...

инициализация SDL
подключил #include &quot;SDL.h&quot; - проверил, запустилось. добавил первую строку из статьи про работу сдл SDL_Init(SDL_INIT_VIDEO); ...

opengl SDL
Подскажите как сделать чтоб треугольник двигался по нажаатию клавиши (стрелка вверх) в том напрявлении в котором направлена его вершина? ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
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