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

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

30.04.2013, 22:13. Показов 2256. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу на Visual C++ 2010, если написать совсем простенькую программку с использование open GL то работает нормально, но а если чуть посложнее, то из самой среды, после компиляции, запускается и работает нормально. А если ЭТОТ ЖЕ, только что скомпилированый *.exe, запустить просто кликнув на него то он работает первые секунд 5 нормально, потом окно open GL зависает. Не знаю что с этим можно поделать, пробовал несколько версий Visual Studio, а то вдруг с ним что не так. Все файлы *.dll *.lib для работы с open GL закинуты кода надо, все библиотеки и заголовочные файлы указаны в самом коде. ведь оно работает при запуске внутри среды. Подскажите пожалуйста...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2013, 22:13
Ответы с готовыми решениями:

Не запускаются приложения
После установки обновления на винду не открывается ни одно приложение. При попытки запуска...

Не запускаются приложения
Собственно, новая винда, не поставил антивирус, погрешил и теперь не открываются приложения. При...

Не запускаются приложения
Здравствуйте. Проблема такая - при запуске некоторых приложений просто ничего не происходит, не...

не запускаются приложения
Здравствуйте. Проблема такая - при запуске некоторых приложений просто ничего не происходит, не...

28
Заблокирован
Автор FAQ
30.04.2013, 23:59 2
kimirius, конфигурация проекта при сборке какая Debug или Release?
0
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
01.05.2013, 20:39  [ТС] 3
Debug-многопоточная отладка (/MTd)
Releade-многопоточная (/MT)

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

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

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

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

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

Не по теме:

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

0
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 09:53  [ТС] 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();
}
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
02.05.2013, 10:10 10
Я не знаю точно, как именно вы представляете работу данной программы, но для scanf() советую передавать "%s", а не "%c". Попробуйте, может заведётся.
P.S. в 50 строке открывается case, а break для него я не вижу
0
Заблокирован
Автор FAQ
02.05.2013, 10:23 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

1
Заблокирован
Автор FAQ
02.05.2013, 10:33 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 Кб, 5 просмотров)
1
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 10:36  [ТС] 13
теперь она работает так как я планировал изначально ))) спасибо))) НО проблема осталась та же(
0
-=ЮрА=-
02.05.2013, 10:38
  #14

Не по теме:

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

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

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

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

Добавлено через 36 секунд
неужели разный эффект от запуска из консоли и не из консоли
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
02.05.2013, 11:06 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 Посмотреть сообщение
какой линуксоид?, какой графики
Эт я так, дело привычки

1
0 / 0 / 0
Регистрация: 09.09.2012
Сообщений: 16
02.05.2013, 12:01  [ТС] 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 ?
0
Заблокирован
Автор FAQ
02.05.2013, 12:14 20
Цитата Сообщение от kimirius Посмотреть сообщение
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
думаю лучше скажет целый ресурс
http://www.helloworld.ru/texts... engl/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 - буффер глубины

1
02.05.2013, 12:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2013, 12:14
Помогаю со студенческими работами здесь

Не запускаются приложения (Win 7)
Перестали запускаться почти все приложения, в безопасном режиме всё работает, при нормальной...

Не запускаются приложения Windows 7.
Перестали запускатся почти все приложения, некоторые программы вообще не открываются, другие...

Долго запускаются приложения
Привет.На запуск например notepad++ или блокнота, или фотки уходит по 30сек, если открывать по...

Не запускаются DOS-приложения.
Помогите с такой проблемой: при запуске любого DOS-приложения вылазит такое сообщение Что нужно...

Не устанавливаются, не запускаются приложения
Установка приложений начинается, но зависает. Или при запуске приложений выдает ошибку 0хc0000006....

Не запускаются приложения в Windows 7
скачал прогу запкстил её и компьютер перезагрузился и после это никакие приложения не работуют(...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru