Форум программистов, компьютерный форум CyberForum.ru

Не могу создать поток( Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Математика и c++ (литература) http://www.cyberforum.ru/cpp-beginners/thread774817.html
Доброе время суток, друзья) Подскажите что можно почитать хорошего про программирование матриц, интегралов, производных, систем уравнений и тд. В общем про математику в программировании)
C++ Строки и структуры Нужна помощь в реализации части обработки вывода информации о самых молодых, рослых, и самых легких участниках //Информация об участниках спортивных соревнований содержит: Ф. И. О. игрока, игровой номер, возраст, рост, вес. //Для описания информации об участниках спортивных соревнований в программе необходимо использовать тип данных структура. //Для хранения информации об участниках... http://www.cyberforum.ru/cpp-beginners/thread774783.html
C++ Текстовая RPG в консоли по правилам D&D
Доброго времени суток! Решил попробовать себя на новой, так сказать, стезе. Буду рад любой помощи в плане организации хранения информации, ведь текста будет очень много, а доступ к нему должен быть быстрым и удобным. Возник первый вопрос: struct chparams { char* Name;//Имя персонажа char* Class; //Класс персонажа int years; //Возраст int power;//Сила int...
Вызов деструктора C++
Доброго вам времени суток. Проблема в том, что деструктор не выводит сообщение без этой строки. s1.~Shave(); И я не уверен, что так можно писать. Можете подсказать, что не так? #include <iostream> #include <string> using namespace std;
C++ Дана последовательность слов. Проверить правильно ли в ней записаны буквосочетания жи и ши. http://www.cyberforum.ru/cpp-beginners/thread774727.html
Дана последовательность слов. Проверить правильно ли в ней записаны буквосочетания жи и ши. (на языке С++)
C++ Создать класс, реализующий произвольный треугольник Класс должен содержать конструктор, деструктор, Set- и Get-методы для каждого поля подробнее

Показать сообщение отдельно
Мыша
 Аватар для Мыша
4 / 4 / 0
Регистрация: 03.03.2011
Сообщений: 190
29.01.2013, 23:36  [ТС]     Не могу создать поток( Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке)
Цитата Сообщение от Kgfq Посмотреть сообщение
Мыша, ну значит не определена, определи ее. Я без кода ничегошеньки сказать не могу. Не экстрасенс.
вот

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
#include "Engine.h"
#include "glfw.h"
#include <iostream>
#include <process.h>
 
void GLFWCALL WindowResize( int width, int height );
 
CEngine::CEngine(string Title)
    :_Width(800), _Height(600), _c_WindowTitle(Title.c_str())
{
    _WindowInit();
    _OpenGLInit();
    SetProcessPerSecond(75);
    try{
    _Map.LoadMap("simple");
    _Map.LoadFrom3ds("data/models/Flyer.3ds");
    }
    catch (CException *e)
    {
        cout << e->GetMessage() << endl;
        delete e;
    }
}
 
CEngine::~CEngine()
{
}
 
void CEngine::_OpenGLInit()
{
    glViewport( 0, 0, _Width, _Height );
    glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);
    gluPerspective( 65.0f, (GLfloat)_Width/(GLfloat)_Height, 1.0f, 100.0f );
    glMatrixMode( GL_MODELVIEW );
 
    GLfloat AmbientLight[4] = {0.5, 0.5, 0.5, 1.0};
    GLfloat DiffuseLight[4] = {1.0, 1.0, 1.0, 1.0};
    GLfloat SpecularLight[4] = {1.0, 1.0, 1.0, 1.0};
    GLfloat LightPosition[4] = {0.0, 1.0 ,0.0 ,2.0};
    GLfloat SpecularReflection[4] = {0.4, 0.4, 0.4, 1.0};
 
    glShadeModel(GL_SMOOTH);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0,GL_AMBIENT, (const GLfloat*)&AmbientLight);
    glLightfv(GL_LIGHT0,GL_DIFFUSE, (const GLfloat*)&DiffuseLight);
    glLightfv(GL_LIGHT0,GL_SPECULAR, (const GLfloat*)&SpecularLight);
 
    glLightfv(GL_LIGHT0,GL_POSITION,(const GLfloat*)&LightPosition);
 
    glEnable(GL_COLOR_MATERIAL);
    glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
    glMaterialfv(GL_FRONT, GL_SPECULAR, (const GLfloat*)&SpecularReflection);
    glMateriali(GL_FRONT,GL_SHININESS,100);
}
 
void CEngine::_Draw()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glLoadIdentity();
    // =========== Only for testing ==============
    glTranslatef(0,0,-3);
    glRotatef(_Frame,0,1,1);
    // =========== Only for testing ==============
    _Map.Draw();
    for(int i = 0;i < _Vehicles.size();i++) _Vehicles[i].Draw();
    glfwSwapBuffers();
}
 
void CEngine::_Process()
{
    _Frame+=0.2; // =========== Only for testing ==============
    _Running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED);
}
 
void CEngine::SetProcessPerSecond(int Times)
{
    _ProcessPerSecond = 1.0/Times;
}
 
void f(void *data)
{
    _Process();
}
 
void CEngine::MainLoop()
{
    _Frame = 0;// =========== Only for testing ==============
    _Running = true;
    double dTime = glfwGetTime();
    while (_Running)
    {
        _Draw();
 
        _beginthread(f, 0, &a);
        
        dTime = glfwGetTime();
        
    }
    glfwTerminate();
}
 
void GLFWCALL WindowResize( int width, int height )
{
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f);
    glMatrixMode( GL_MODELVIEW );
}
 
void CEngine::_Collision()
{
    for (int i = 0; i < _Vehicles.size(); i++)
    {
        // Collision detection between vehicles
        for (int j = 0; j < _Vehicles.size(); j++)
        {
            TVector3d distance = _Vehicles[i].GetPosition() - _Vehicles[j].GetPosition();
            float min_distance = _Vehicles[i].GetRadius() + _Vehicles[j].GetRadius();
            if (distance.LengthSquared() <= min_distance * min_distance)
            {
                /* Collision detected!
                ** TODO: reduce vehicles life
                ** FIXED: compute new velocity vector
                */
                // p = mv;  Ek = mv^2/2
                TVector3d v1 = _Vehicles[i].GetVelocity();
                int       m1 = _Vehicles[i].GetWeight();
                TVector3d v2 = _Vehicles[j].GetVelocity();
                int       m2 = _Vehicles[j].GetWeight();
 
                _Vehicles[i].SetVelocity((v1 * (m1 - m2) + v2 * m2 * 2) * (1/(m1 + m2)));
                _Vehicles[j].SetVelocity((v2 * (m2 - m1) + v1 * m1 * 2) * (1/(m1 + m2)));
            }
        }
        /*
        ** TODO: Collision detection beween vehicle and other static objects e.g. walls
        ** TODO: Make sure you use square instead of square root everywhere where it possible
        */
    }
}
 
void CEngine::_WindowInit()
{
    glfwInit();
    glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4);
    if( !glfwOpenWindow( _Width,_Height, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) )
    {
        glfwTerminate();
    }
    glfwSetWindowTitle(_c_WindowTitle);
    glfwSetWindowSizeCallback( WindowResize );
    glfwGetWindowSize( &_Width, &_Height);
    _Height = _Height > 0 ? _Height : 1;
}
 
Текущее время: 12:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru