Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TBAPb
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33
#1

Ошибка при попытке добавить объект в Box2d - C++

21.05.2013, 14:29. Просмотров 222. Ответов 0
Метки нет (Все метки)

Добрый день. Столкнулся с не понятной ошибкой. Есть код
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
#include <iostream>
#include <GL/GLAux.h>
#include <GL/glut.h>
#pragma comment (lib, "opengl32.lib")
#pragma comment (lib, "glut32.lib")
#include <Box2D.h>
#include <SDL.h>
 
const int WIDTH=640;
const int HEIGHT=480;
const float M2P=20.0;
const float P2M=1/M2P;
b2World* world;
 
b2Body*addRect(int x,int y,int w,int h, bool dyn)
{
    b2BodyDef bodydef;
 
    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.00f; //плотность
    body->CreateFixture(&fixturedef);
 
    return 0;
}
 
void init ()
{
    glMatrixMode(GL_PROJECTION);
    glOrtho(0,WIDTH,HEIGHT,0,-1,1);
    glMatrixMode(GL_MODELVIEW);
    glClearColor(0,0,0,1);
    world=new b2World(b2Vec2(0.00f,9.81f));
    addRect(WIDTH/10,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:
 
 
                    if (event.button.button = SDL_BUTTON_LEFT)
                    {
                        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();
}

При запуске вроде как все нормально. Однако статический объект он не отображает на экране. А при нажатии на клавишу и соответственно выводе динамического объекта выдает вот такую ошибку.

Подскажите, пожалуйста, где у меня ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2013, 14:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при попытке добавить объект в Box2d (C++):

Ошибка при запуске Box2d Visual Studio 2013 - C++
Добрый день! Подскажите. Пытаюсь запустить Box2d. Суть проблемы в следующем. Со сборкой библиотеки проблем нет. Проблема заключается в...

Ошибка при попытке открытия файла - C++
Добрый день. При выполнении функции открытия файла F.open(adr,ios::in) по несуществующему адресу программу выбивает при этом появляется...

Ошибка при попытке создания шаблона - C++
В чём ошибка? Функции Map::isGardenWithoutWallFlag, Map::setNothing, Map::incrementRoad, Map::setFlagWall имеют действительно такие...

Ошибка при попытке удаления указателя - C++
Программа работает,но при попытке выйти из нее по условию,вылетает ошибка.Если закомментировать delete, то выходит без ошибок.Подскажите,...

Ошибка при попытке загрузки файла - C++
Задача состоит в том, чтобы по очереди загрузить файлы, введя их имена в консоль. #include &lt;fstream&gt; #include &lt;iostream&gt; using...

Ошибка при попытке подключить внешнюю библиотеку - C++
Делал всё по инструкции, только пути другие. Пишет: Гуглёж не помог. Когда-то вроде с glut вылезла такая же проблема, но я не...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 14:29
Привет! Вот еще темы с ответами:

Ошибка С2280 при попытке создания потока - C++
При попытке создания потока auto t = new thread(&amp;merge, fin, fout, maxmemory, p) вылезает error C2280: предпринята попытка ссылки на...

Ошибка: note: при попытке сопоставить список аргументов - C++
Всем привет. У меня тут проблемка. #include &lt;iostream&gt; #include &lt;map&gt; using namespace std; int main() { map&lt;string, int&gt;m...

Работа с динамического массивом - ошибка при попытке ввода - C++
При простой попытке ввода выскакивает ошибка, что кириллица, что английский - ответ один и тот же. Что я упустил? #include &lt;vcl.h&gt; ...

Ошибка при попытке инициализации входных параметров в конструкторе - C++
Доброго времени. При попытке инициализировать поле State макроопределением компилятор выдаёт ошибку. При инициализации константой всё...


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

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

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