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

Open GL, не запускаются приложения с его использованием - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
30.04.2013, 22:13     Open GL, не запускаются приложения с его использованием #1
Пишу на Visual C++ 2010, если написать совсем простенькую программку с использование open GL то работает нормально, но а если чуть посложнее, то из самой среды, после компиляции, запускается и работает нормально. А если ЭТОТ ЖЕ, только что скомпилированый *.exe, запустить просто кликнув на него то он работает первые секунд 5 нормально, потом окно open GL зависает. Не знаю что с этим можно поделать, пробовал несколько версий Visual Studio, а то вдруг с ним что не так. Все файлы *.dll *.lib для работы с open GL закинуты кода надо, все библиотеки и заголовочные файлы указаны в самом коде. ведь оно работает при запуске внутри среды. Подскажите пожалуйста...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2013, 22:13     Open GL, не запускаются приложения с его использованием
Посмотрите здесь:

C++ не запускаются приложения на платформе DOS
Не запускаются программы(( C++
C++ Выполнить задания с использованием инструкции выбора if и с использованием условного оператора
Yайти максимальное и минимальное число и его индекс одномерного массива с использованием указателей C++
C++ Запустить параллельного приложения / Запуск приложения в новом консольном окне
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
30.04.2013, 23:59     Open GL, не запускаются приложения с его использованием #2
kimirius, конфигурация проекта при сборке какая Debug или Release?
kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
01.05.2013, 20:39  [ТС]     Open GL, не запускаются приложения с его использованием #3
Debug-многопоточная отладка (/MTd)
Releade-многопоточная (/MT)

Добавлено через 10 минут
активная - Releade
-=ЮрА=-
Заблокирован
Автор FAQ
01.05.2013, 21:15     Open GL, не запускаются приложения с его использованием #4
kimirius, хорошо проект вроди верно собирается,наверное надо смотреть код. Ты по урокам NеНе делал?
kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
01.05.2013, 21:29  [ТС]     Open GL, не запускаются приложения с его использованием #5
каким урокам?

Добавлено через 2 минуты
Все дело в том что она полностью нормально комплится и запускается, все отменно работает, но как только я этот же только что скомпилиный файлик запускаю вне визуал си, то он работает только первые несколько секунд, потом окно open GL зависает и не отвечает не на что

Добавлено через 1 минуту
не вылетает, и не выдает не каких ошибок... и на других компах этот файл так же себя ведет или вообще не запускается, и не говорит что библиотек не хватает или еще чего
-=ЮрА=-
Заблокирован
Автор FAQ
01.05.2013, 21:38     Open GL, не запускаются приложения с его использованием #6
kimirius, уроки можешь нагуглить.На счёт вылета-где то утёчка памяти
kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 07:32  [ТС]     Open GL, не запускаются приложения с его использованием #7
А проблема может быть в том что я не написал
using namespace std; ?
Это вроде как разрешение системе резервировать память под переменные используемые в этой программе, как то так или...?

Добавлено через 8 часов 54 минуты
блин...не помогло
-=ЮрА=-
Заблокирован
Автор FAQ
02.05.2013, 08:42     Open GL, не запускаются приложения с его использованием #8
По поводу using namespace std - прочти http://www.cyberforum.ru/blogs/34326/blog275.html. Я не думаю что у тебя каой то экзотический вариант кода с перекрёстным использованием имён, скажем free вместо функции идёт как переменная (это утрировано).
Так что на using namespace std грешить не стоит. Послушай совет у тебя утчека памяти, возможно ті использовал GL и частично отрисовывал графику с помощью GDI, при этом не освободил память из под какого-то активного графического элемента (того же пера к примеру), тогда идёт утечка объектов GDI == утечка памяти

Добавлено через 1 минуту

Не по теме:

kimirius, мне как и любому другому программисту нужен код для анализа

kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 09:53  [ТС]     Open GL, не запускаются приложения с его использованием #9
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
#include <gl\glut.h>
#include <iostream>
 
void ar(float x, float y)
{
    glColor3f(1.0, 0.0, 0.0);
     glVertex2f(x, y);
}
 
void ag(float x, float y)
{
    glColor3f(0.0, 1.0, 0.0);
     glVertex2f(x, y);
}
 
void ab(float x, float y)
{
    glColor3f(0.0, 0.0, 1.0);
     glVertex2f(x, y);
}
 
void awh(float x, float y)
{
    glColor3f(1.0, 1.0, 1.0);
     glVertex2f(x, y);
}
 
void abl(float x, float y)
{
    glColor3f(0.0, 0.0, 0.0);
     glVertex2f(x, y);
}
 
void display()
{
    float x=0,y=0;
    char c, c1;
    int p=4;
    glClear(GL_COLOR_BUFFER_BIT);
    while(true)
    {
        printf("vvedite napravlenie\n");
        scanf("%c",&c);
        switch(c)
        {
        case 'w': y+=0.01;break;
        case 's': y-=0.01;break;
        case 'd': x+=0.01;break;
        case 'a': x-=0.01;break;
        case 'p':   {printf("vvedite chvet\n");scanf("%c",&c1);
                    switch(c1)
                    {
                    case '1': p=1;break;
                    case '2': p=2;break;
                    case '3': p=3;break;
                    case '4': p=4;break;
                    case '5': p=5;break;
                    }}
        }
        glBegin(GL_POINTS);
        switch(p)
        {
        case 1: ar(x,y);break;
        case 2: ag(x,y);break;
        case 3: ab(x,y);break;
        case 4: awh(x,y);break;
        case 5: abl(x,y);break;
        }
        glEnd();
        glFlush();
    }
}
 
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(340, 340); //размер
    glutInitWindowPosition(900, 000); //позиция
    glutCreateWindow("mikro trosh"); //заголовок окна
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-0.5, 0.5, -0.5, 0.5, -1.0, 1.0);
    glutDisplayFunc(display);
    glutMainLoop();
}
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
02.05.2013, 10:10     Open GL, не запускаются приложения с его использованием #10
Я не знаю точно, как именно вы представляете работу данной программы, но для scanf() советую передавать "%s", а не "%c". Попробуйте, может заведётся.
P.S. в 50 строке открывается case, а break для него я не вижу
-=ЮрА=-
Заблокирован
Автор FAQ
02.05.2013, 10:23     Open GL, не запускаются приложения с его использованием #11
kimirius, ты очишал экран 1 раз
Цитата Сообщение от kimirius Посмотреть сообщение
glClear(GL_COLOR_BUFFER_BIT);
а в цикле кто чистить будет?
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
#include <gl\glut.h>
#include <stdio.h>
 
void ar(float x, float y)
{
    glColor3f(1.0, 0.0, 0.0);
     glVertex2f(x, y);
}
 
void ag(float x, float y)
{
    glColor3f(0.0, 1.0, 0.0);
     glVertex2f(x, y);
}
 
void ab(float x, float y)
{
    glColor3f(0.0, 0.0, 1.0);
     glVertex2f(x, y);
}
 
void awh(float x, float y)
{
    glColor3f(1.0, 1.0, 1.0);
     glVertex2f(x, y);
}
 
void abl(float x, float y)
{
    glColor3f(0.0, 0.0, 0.0);
     glVertex2f(x, y);
}
 
void display()
{
    float x=0,y=0;
    char c, c1;
    int p=4;
    
    while(true)
    {
        
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glClearDepth(1.0);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glBegin(GL_POINTS);
        printf("vvedite napravlenie : ");
        scanf("%c",&c);getchar();
        switch(c)
        {
        case 'w': y+=0.01;break;
        case 's': y-=0.01;break;
        case 'd': x+=0.01;break;
        case 'a': x-=0.01;break;
        case 'p':   
            {
                printf("vvedite chvet : ");
                scanf("%c",&c1);getchar();
                switch(c1)
                {
                    case '1': p=1;break;
                    case '2': p=2;break;
                    case '3': p=3;break;
                    case '4': p=4;break;
                    case '5': p=5;break;
                }
            }
        }
        switch(p)
        {
            case 1: ar(x,y);break;
            case 2: ag(x,y);break;
            case 3: ab(x,y);break;
            case 4: awh(x,y);break;
            case 5: abl(x,y);break;
        }
        glEnd();
        glFlush();
    }
}
 
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(340, 340); //размер
    glutInitWindowPosition(900, 000); //позиция
    glutCreateWindow("mikro trosh"); //заголовок окна
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-0.5, 0.5, -0.5, 0.5, -1.0, 1.0);
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}
- пробуй

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
scanf("%c",&c);getchar();
getchar() - снимет из буфера '\n' который попадает в него после нажатия Enter

-=ЮрА=-
Заблокирован
Автор FAQ
02.05.2013, 10:33     Open GL, не запускаются приложения с его использованием #12
kimirius, мне больше понравился вариант с getch(нет граблей с вводом чара в цикле), но алгоритм явно недоработан т.к при 3-4 w/s точка перестаёт двигаться
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 <gl\glut.h>
#include <stdio.h>
#include <conio.h>
 
void ar(float x, float y)
{
    glColor3f(1.0, 0.0, 0.0);
     glVertex2f(x, y);
}
 
void ag(float x, float y)
{
    glColor3f(0.0, 1.0, 0.0);
     glVertex2f(x, y);
}
 
void ab(float x, float y)
{
    glColor3f(0.0, 0.0, 1.0);
     glVertex2f(x, y);
}
 
void awh(float x, float y)
{
    glColor3f(1.0, 1.0, 1.0);
     glVertex2f(x, y);
}
 
void abl(float x, float y)
{
    glColor3f(0.0, 0.0, 0.0);
     glVertex2f(x, y);
}
 
void display()
{
    float x=0,y=0;
    char c, c1;
    int p=4;
    while(true)
    {
        
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glClearDepth(1.0);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glBegin(GL_POINTS);
        printf("vvedite napravlenie : ");c = getch();
        printf("%c\n", c);
        switch(c)
        {
        case 'w': y+=0.01;break;
        case 's': y-=0.01;break;
        case 'd': x+=0.01;break;
        case 'a': x-=0.01;break;
        case 'p':   
            {
                printf("vvedite chvet : ");c1 = getch();
                printf("%c\n", c1);
                switch(c1)
                {
                    case '1': p=1;break;
                    case '2': p=2;break;
                    case '3': p=3;break;
                    case '4': p=4;break;
                    case '5': p=5;break;
                }
            }
            break;
        default:
            printf("Entered unspurted key\n");
            break;
        }
        switch(p)
        {
            case 1: ar(x,y);break;
            case 2: ag(x,y);break;
            case 3: ab(x,y);break;
            case 4: awh(x,y);break;
            case 5: abl(x,y);break;
        }
        glEnd();
        glFlush();
    }
}
 
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(340, 340); //размер
    glutInitWindowPosition(900, 000); //позиция
    glutCreateWindow("mikro trosh"); //заголовок окна
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-0.5, 0.5, -0.5, 0.5, -1.0, 1.0);
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}
Вложения
Тип файла: rar kimirus.rar (17.7 Кб, 4 просмотров)
kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 10:36  [ТС]     Open GL, не запускаются приложения с его использованием #13
теперь она работает так как я планировал изначально ))) спасибо))) НО проблема осталась та же(
-=ЮрА=-
02.05.2013, 10:38
  #14

Не по теме:

Цитата Сообщение от kimirius Посмотреть сообщение
НО проблема осталась та же(
- последний экзешник вываливается после нескольких минут?

kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 10:42  [ТС]     Open GL, не запускаются приложения с его использованием #15
ВООООООТ при 3-4 w/s точка перестаёт двигаться. когда прога запускается сразу после компиляции(при нажатии кнопочки ввиде "play" в visual c++) она работает нормально, стабильно, пока не закрою, а если просто самому этот файл открыть то вот так и получается, что окошко GL висьнет почему то

Добавлено через 2 минуты
как ты ее собрал? =D она же пашет ))))

Добавлено через 1 минуту
нет не пашет ((, блин, но только что работала минут несколько )) то что ты мне в раре кинул
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
02.05.2013, 10:48     Open GL, не запускаются приложения с его использованием #16
Линуксоид в треде, конечно же, но всё-таки, из консоли запускал exe-шник или из графики? Если из консоли, то вообще ничего не говорит?
kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 10:56  [ТС]     Open GL, не запускаются приложения с его использованием #17
какой линуксоид?, какой графики, нет не из консоли

Добавлено через 36 секунд
неужели разный эффект от запуска из консоли и не из консоли
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
02.05.2013, 11:06     Open GL, не запускаются приложения с его использованием #18
kimirius, я давно уже с виндой не работал... Помню только проблемы с консольными приложениями...
Попробуйте так:
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
#include <gl\glut.h>
#include <cstdio>
 
float x=0,y=0;
int p=4;
 
void ar(float x, float y) {
    glColor3f(1.0, 0.0, 0.0);
     glVertex2f(x, y);
}
 
void ag(float x, float y) {
    glColor3f(0.0, 1.0, 0.0);
     glVertex2f(x, y);
}
 
void ab(float x, float y) {
    glColor3f(0.0, 0.0, 1.0);
     glVertex2f(x, y);
}
 
void awh(float x, float y) {
    glColor3f(1.0, 1.0, 1.0);
     glVertex2f(x, y);
}
 
void abl(float x, float y) {
    glColor3f(0.0, 0.0, 0.0);
    glVertex2f(x, y);
}
 
void display() {
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glClearDepth(1.0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POINTS);
    switch(p) {
        case 1: ar(x,y);break;
        case 2: ag(x,y);break;
        case 3: ab(x,y);break;
        case 4: awh(x,y);break;
        case 5: abl(x,y);break;
    }
    glEnd();
    glFlush();
}
 
 void up(unsigned char key, int xm, int ym){
    switch(key) {
        case 'w': y+=0.01;break;
        case 's': y-=0.01;break;
        case 'd': x+=0.01;break;
        case 'a': x-=0.01;break;
        case '1': p=1;break;
        case '2': p=2;break;
        case '3': p=3;break;
        case '4': p=4;break;
        case '5': p=5;break;
        default:
            printf("Entered unspurted key\n");
            break;
    }
    display();
}
 
int main(int argc, char **argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(340, 340); //размер
    glutInitWindowPosition(900, 000); //позиция
    glutCreateWindow("mikro trosh"); //заголовок окна
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-0.5, 0.5, -0.5, 0.5, -1.0, 1.0);
    glutDisplayFunc(display);
    glutKeyboardUpFunc(up);
    glutMainLoop();
    return 0;
}
Понимаю, глобальные переменные и прочее, но думаю, так лучше - обрабатываются нажатия на клавиши, а не ввод в консоль.

Не по теме:


Цитата Сообщение от kimirius Посмотреть сообщение
какой линуксоид?, какой графики
Эт я так, дело привычки

kimirius
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 12:01  [ТС]     Open GL, не запускаются приложения с его использованием #19
Цитата Сообщение от elivin Посмотреть сообщение
Эт я так, дело привычки
ясненько )))

Добавлено через 43 секунды
=D работает, все работает как должно, не чего не вылетает и не зависет. )))) благодарю )))))))))))))))

Добавлено через 56 секунд


Добавлено через 11 минут
а можно не много пояснений? если не сложно )

Добавлено через 4 минуты
как оно все вообще без циклов так работает? мои представления такие:
main->display->main->up->display->main->up->display
так? или ваще чепуха? =D

Добавлено через 1 минуту
и еще, вот эта строчка
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
что означает GL_DEPTH_BUFFER_BIT ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 12:14     Open GL, не запускаются приложения с его использованием
Еще ссылки по теме:

Ввести число от 0 до 5. Вывести его название на английском (или другом) языке (с использованием switch, break) C++
Написать программу с использованием функции и с использованием макроса C++
Тип long long и его ввод\вывод с использованием scanf\printf C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
02.05.2013, 12:14     Open GL, не запускаются приложения с его использованием #20
Цитата Сообщение от kimirius Посмотреть сообщение
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
думаю лучше скажет целый ресурс
http://www.helloworld.ru/texts/comp/...l/opengl/2.htm
Цитата
Существуют 3 типа основных графических операций : очистка экрана ,
рисование геометрических обьектов , рисование растеризованных обьектов (текстур) .

Очистка RGBA mode window в черный цвет :


glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);


Чтобы очистить одновременно 2 видеобуфера в режиме RGBA - color buffer и depth buffer - нужно :

glClearColor(0.0, 0.0, 0.0, 0.0);
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


Вообще-то буферов больше - это :
Color buffer
Depth buffer
Accumulation buffer
Stencil buffer


Разница между

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

и

glClear(GL_COLOR_BUFFER_BIT);
glClear(GL_DEPTH_BUFFER_BIT);

в том , что первый вариант очищает быстрее .
Добавлено через 3 минуты

Не по теме:

ЗЫ: на пальцах GL_DEPTH_BUFFER_BIT - буффер глубины

Yandex
Объявления
02.05.2013, 12:14     Open GL, не запускаются приложения с его использованием
Ответ Создать тему
Опции темы

Текущее время: 22:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru