Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2014, 02:29   #1
Artem1702
Новичок
Джуниор
 
Регистрация: 23.02.2014
Сообщений: 3
По умолчанию OpenGL и белый квадрат

Товарищи, вот такая проблема. Как-то давно, поставил OpenGL, и при вводе рабочего кода и, предварительно занеся все нужные файлы по нужным папкам, lib, include etc., при компиляции выводился вместо нужного рисунка, белый квадрат.

Долго искал решение проблемы в интернете, много раз заменял libы, includы, переустанавливал студии, ставил и 10ку и 12ую, все бестолку. Решил переустановить Windows. Установил и вдруг вспомнил, что дров нет у меня. Пока качались дрова установил студию 10, закинул файлы опенгл, вставил код - все работает. Позже установил дрова на видеокарту, вайфай, LAN, хром и сафари и снова появляется снова белый квадрат...Подозреваю все из-за драйверов на видюху...Как решить проблему????
Изображения
Тип файла: jpg Белый квадрат.jpg (25.9 Кб, 163 просмотров)
Artem1702 вне форума Ответить с цитированием
Старый 23.02.2014, 11:16   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Можете код показать?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 23.02.2014, 20:08   #3
Artem1702
Новичок
Джуниор
 
Регистрация: 23.02.2014
Сообщений: 3
По умолчанию

Код:
#include <GL/glut.h>

void show(void) {
  glClearColor(1.0, 5.0, 0.0, 5);
	glClear(GL_COLOR_BUFFER_BIT);
  glLoadIdentity(); 

  glTranslatef(0.0, 0.5, 0.0);
	glColor3ub(245, 222, 179);	
	gluSphere(gluNewQuadric(), 0.15, 100, 2);   //голова
  glLoadIdentity();

   glColor3f(0.0, 0.0, 0.0);
    glBegin(GL_LINES);
	glVertex2f(-0.02, 0.58);
	glVertex2f(-0.07, 0.57);
	glEnd();
   glTranslatef(-0.035, 0.53, 0.0);
	glColor3f(1.0, 1.0, 1.0);	
	gluSphere(gluNewQuadric(), 0.03, 100, 2);  //ліве око
	glColor3f(0.0, 0.0, 1.0);	
	gluSphere(gluNewQuadric(), 0.01, 50, 2);
  glLoadIdentity();

    glColor3f(0.0, 0.0, 0.0);
    glBegin(GL_LINES);
	glVertex2f(0.02, 0.58);
	glVertex2f(0.07, 0.57);
	glEnd();
   glTranslatef(0.035, 0.53, 0.0);
	glColor3f(1.0, 1.0, 1.0);	
	gluSphere(gluNewQuadric(), 0.03, 100, 2); //праве око
	glColor3f(0.0, 0.0, 1.0);	
	gluSphere(gluNewQuadric(), 0.01, 50, 2);
  glLoadIdentity();

    glColor3f(0.0, 0.0, 0.0);
    glBegin(GL_LINE_STRIP);
	glVertex2f(-0.1, 0.46);
	glVertex2f(-0.05, 0.423);  // рот
	glVertex2f(0.0, 0.41);
	glVertex2f(0.05, 0.423);
	glVertex2f(0.1, 0.46);
	glEnd();

	glColor3f(0.0, 0.0, 0.0); // капелюх
	glBegin(GL_QUADS);
	glVertex2f(0.2, 0.59);
	glVertex2f(0.2, 0.70);
	glVertex2f(-0.2, 0.70);
	glVertex2f(-0.2, 0.59);
	glEnd();
	glBegin(GL_QUADS);
	glVertex2f(0.1, 0.62);
	glVertex2f(0.1, 0.75);
	glVertex2f(-0.1, 0.75);
	glVertex2f(-0.1, 0.62);
	glEnd();

	 glTranslatef(-0.231, -0.01, 0.0);
	glColor3ub(245, 222, 179);	
	gluSphere(gluNewQuadric(), 0.04, 100, 2);   //ліва кисть
  glLoadIdentity();
  	 glColor3f(0.0, 0.0, 0.0);
  glBegin(GL_QUADS);  //трость
  glVertex2f(0.17, -0.02);
  glVertex2f(0.17, 0.01);
  glVertex2f(0.35, 0.01);
  glVertex2f(0.35, -0.02);
  glEnd();
   glBegin(GL_QUADS);  
  glVertex2f(0.21, -0.56);
  glVertex2f(0.21, -0.02);
  glVertex2f(0.25, -0.02);
  glVertex2f(0.25, -0.56);
  glEnd();
   glTranslatef(0.231, -0.01, 0.0);
	glColor3ub(245, 222, 179);	
	gluSphere(gluNewQuadric(), 0.04, 100, 2);   //права кисть
  glLoadIdentity();

	glColor3ub(71.0, 60.0, 139.0); //торс
	glBegin(GL_QUADS);
	glVertex2f(-0.15, 0.0);
	glVertex2f(-0.15, 0.35);
	glVertex2f(0.15, 0.35);
	glVertex2f(0.15, 0.0);
	glEnd();
	glBegin(GL_QUADS);   // левая рука
	glVertex2f(-0.27, 0.0);
	glVertex2f(-0.15, 0.35);
	glVertex2f(-0.15, 0.1);
	glVertex2f(-0.18, 0.0);
	glEnd();
	glBegin(GL_QUADS); //правая рука
	glVertex2f(0.27, 0.0);
	glVertex2f(0.15, 0.35);
	glVertex2f(0.15, 0.1);
	glVertex2f(0.18, 0.0);
	glEnd();
	glColor3f(0.0, 0.0, 0.0);
	glBegin(GL_LINES);
	glVertex2f(0.0, 0.15);
	glVertex2f(0.0, 0.0);
	glEnd();
	glColor3f(1.0, 1.0, 1.0); //рубашка
	glBegin(GL_TRIANGLES);
	glVertex2f(0.09, 0.35);
	glVertex2f(-0.09, 0.35);
	glVertex2f(0.0, 0.15);
	glEnd();
	glColor3ub(255.0, 69.0, 0.0); //краватка
	glBegin(GL_TRIANGLES);
	glVertex2f(0.03, 0.35);
	glVertex2f(-0.03, 0.35);
	glVertex2f(0.0, 0.3);
	glEnd();
	glBegin(GL_QUADS);
	glVertex2f(0.0, 0.3);
	glVertex2f(-0.03, 0.21);
	glVertex2f(0.0, 0.15);
	glVertex2f(0.03, 0.21);
	glEnd();
	glColor3f(0.0, 0.0, 0.0);
	glBegin(GL_LINE_STRIP); //кайма краватки
	glVertex2f(0.0, 0.3);
	glVertex2f(-0.03, 0.35);
	glVertex2f(0.03, 0.35);
	glVertex2f(0.0, 0.3);
	glVertex2f(-0.03, 0.21);
	glVertex2f(0.0, 0.15);
	glVertex2f(0.03, 0.21);
	glVertex2f(0.0, 0.3);
	glEnd();

	glColor3ub(148.0, 0.0, 211); //ліва штанина
	glBegin(GL_QUADS);
	glVertex2f(-0.15, 0.0);
	glVertex2f(-0.16, -0.5);
	glVertex2f(-0.02, -0.5);
	glVertex2f(0.01, 0.0);
	glEnd(); 
	glBegin(GL_QUADS);  //права штанина
	glVertex2f(0.15, 0.0);
	glVertex2f(0.16, -0.5);
	glVertex2f(0.02, -0.5);
	glVertex2f(-0.01, 0.0);
	glEnd();

	glColor3f(0.0, 0.0, 0.0); //ліва туфля
	glBegin(GL_QUADS);
	glVertex2f(-0.16, -0.5);
	glVertex2f(-0.02, -0.5);
	glVertex2f(-0.02, -0.56);
	glVertex2f(-0.16, -0.56);
	glEnd(); 
	glBegin(GL_TRIANGLES);
	glVertex2f(-0.16, -0.5);
	glVertex2f(-0.16, -0.56);
	glVertex2f(-0.23, -0.56);
	glEnd();
	glBegin(GL_QUADS);  //права туфля
	glVertex2f(0.16, -0.5);
	glVertex2f(0.02, -0.5);
	glVertex2f(0.02, -0.56);
	glVertex2f(0.16, -0.56);
	glEnd(); 
	glBegin(GL_TRIANGLES);
	glVertex2f(0.16, -0.5);
	glVertex2f(0.16, -0.56);
	glVertex2f(0.23, -0.56);
	glEnd();

	glFlush();
}

void main(int argc, char **argv) {
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
	glutInitWindowPosition(100,100);
	glutInitWindowSize(600,600);
	glOrtho(-300.0, 300, -300, 300, -5.0, 5.0);
	glutCreateWindow("HUMAN");
	glutDisplayFunc(show);
	glutMainLoop();
}
Artem1702 вне форума Ответить с цитированием
Старый 23.02.2014, 22:28   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Попробуйте для начала линию нарисовать.

А если так?
Код:
glFlush();
glutSwapBuffers();// Эту строку добавить

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 23.02.2014, 23:54   #5
Artem1702
Новичок
Джуниор
 
Регистрация: 23.02.2014
Сообщений: 3
Печаль

glSwapBuffers не помог.

Еще пробовал с таким кодом
Код:
#include <GL\glut.h>

void Draw()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glFlush();
}

void Initialize()
{
	glClearColor(0.2, 0.0, 0.0, 1.0);
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
	glutInitWindowSize(400, 400);
	glutInitWindowPosition(100, 200);
	glutCreateWindow("Lesson 1");
	glutDisplayFunc(Draw);
	Initialize();
	glutMainLoop();
	return 0;
}
То же самое...Тот же белый квадрат.
Artem1702 вне форума Ответить с цитированием
Старый 24.02.2014, 06:58   #6
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
glSwapBuffers не помог.
Именно glutSwapBuffers(); Обязательно.
Код:
#include <GL/glut.h>
#include <GL/glu.h>
int   width,height;

void Reshape(int width,int height)
{
     glViewport(0,0,width,height);
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     gluOrtho2D(-1,1,-1,1);
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
}


void Draw(void)
{
   glClearColor(0,0,0,0);
   glClear(GL_COLOR_BUFFER_BIT);
   glPushMatrix();
   glColor3f(0.6,0.6,0.6);

   glBegin(GL_LINES);
    glVertex2f(-1.0,0.0);
    glVertex2f(1.0,0.0);

    glVertex2f(0.0,-1.0);
    glVertex2f(0.0,1.0);
   glEnd();

   glPopMatrix();
   glutSwapBuffers();
}

void PaintTimer(int value)
{
   glutPostRedisplay();
   glutTimerFunc(COUNT_TIMER,PaintTimer,0);
}


int main(int argс, char * argv[])
{
     
    glutInit(&argс,argv);
    width  = glutGet(GLUT_SCREEN_WIDTH);
    height = glutGet(GLUT_SCREEN_HEIGHT);
   
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    char str[17]={0};
    sprintf(str,"%dx%d:32@60",width,height);
    glutGameModeString(str);
    glutEnterGameMode();

    glutReshapeFunc(Reshape);
    glutDisplayFunc(Draw);
    glutTimerFunc(30, PaintTimer, 0);
    glutMainLoop();
    return 0;
}
Проверьте этот код.

Цитата:
Еще пробовал с таким кодом
Он не будет работать т.к. это "обрубок" от того, что нужно.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 24.02.2014 в 07:01.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 25.02.2014, 03:16   #7
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

В С++ ещё не игрался с OGL, но все же. Не вижу инициализации контекста OpenGL и привязки его в вашему окну. Скорей всего именно из-за того, что к вашему окну не привязан именно контекст OGL у вас и рисуется белый квадрат. Почему я так решил?
Потому что код
Код:
glClearColor(1.0, 5.0, 0.0, 5);
должен был бы дать вам желтый цвет фона, а у вас он белый.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 25.02.2014, 07:18   #8
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
В С++ ещё не игрался с OGL, но все же. Не вижу инициализации контекста OpenGL и привязки его в вашему окну. Скорей всего именно из-за того, что к вашему окну не привязан именно контекст OGL у вас и рисуется белый квадрат.
glut сам реализует контекст. Это кроссплатформенная библиотека.
Код:
        glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
	glutInitWindowSize(400, 400);
	glutInitWindowPosition(100, 200);
	glutCreateWindow("Lesson 1");
	glutDisplayFunc(Draw);
	Initialize();
Этот код делает контекст и привязывает его к окну.
ТС, Вам необходимо проверить этот код(обязательно обратите внимание на хедеры) или этот. Главный вопрос - Вы где брали glut? Как устанавливали?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 25.02.2014 в 07:26.
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Белый шум Geremy Помощь студентам 0 09.09.2013 21:24
Белый экран при работе с OpenGL Bugrimov Помощь студентам 2 29.06.2013 07:17
белый шрифт по условию Spellpir Microsoft Office Excel 3 07.02.2013 15:20
Белый и серый ip Иллидан Свободное общение 6 07.07.2011 23:13
Белый цвет segail Microsoft Office Excel 4 11.07.2009 13:48