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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2012, 19:19   #1
Ada_A
 
Регистрация: 24.06.2012
Сообщений: 6
Печаль opengl vc2010

помидорами не кидаться, громко ногами не топать..)
помощь очень нужна

ругается на кусок с рисованием сцены.. что делать? в какой бубен (кроме своей головы) постучать?

Код:
#include <tchar.h>   
#include <windows.h>          
#include <math.h> 
   #include "squadric.h"

#pragma comment(lib, "glaux.lib") 
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "opengl32.lib")
  
     #include <gl\gl.h>               
     #include <gl\glu.h>             
     #include <gl\glaux.h>              

#define PI	(float)3.141592648 

     HGLRC  hRC=NULL;              
     HDC  hDC=NULL;              
     HWND  hWnd=NULL;             
     HINSTANCE  hInstance;              
 
     bool  keys[256];                
     bool  active=true;                
     bool  fullscreen=true;              
	 //--------
	 int radius = 0;	// 0 для эллипсоида, 1 для тороида
	 SuperQuadric sq;
	 //--------
     LRESULT  CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );        
 
            GLvoid ReSizeGLScene( GLsizei width, GLsizei height )        
          {
            if( height == 0 )              
            {
               height = 1;
            }
                 glViewport( 0, 0, width, height );          
                     glMatrixMode( GL_PROJECTION );            
    glLoadIdentity();              

    gluPerspective( 45.0f, (GLfloat)width/(GLfloat)height, 0.1f, 100.0f );
    glMatrixMode( GL_MODELVIEW );           
    glLoadIdentity();             
  }
 int InitGL( GLvoid )              
    {
    glShadeModel( GL_SMOOTH );            
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);          
    glClearDepth( 1.0f );              
    glEnable( GL_DEPTH_TEST );            
    glDepthFunc( GL_LEQUAL );            
    glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );      
		// инициализировать значения суперквадрик
	sq.a1 = 1;
	sq.a2 = 1;
	sq.a3 = 1;
	sq.alpha = 2;
	sq.n = 1;
	sq.e = 1;
	sq.s1 = 0;
	sq.t1 = 0;
	sq.s2 = 1;
	sq.t2 = 1;
	sq.u1 = -PI / 2;
	sq.u2 = PI / 2;
	sq.v1 = -PI;
	sq.v2 = PI;
	sq.u_segs = 8;
	sq.v_segs = 8;

            return true;                
  }
    int DrawGLScene( GLvoid )                
    {
          glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );      // Очистить экран и буфер глубины
          glLoadIdentity();             
         return true;                
    }

	//-----------------------------------
	// Рисуем сцену
	glPushMatrix ( );
	glTranslatef ( 0, 0, 0 );
	glRotatef ( theta, 1.0f, 0.0f, 0.0f );
	glRotatef ( theta, 0.0f, 1.0f, 0.0f );
	glRotatef ( theta, 0.0f, 0.0f, 1.0f );
	glColor3f ( 1.0f, 0.0f, 0.0f );
	if ( which_shape == 0 ) {
		sqSolidEllipsoid ( &sq, 0, 1 );

	} else {
		sqSolidToroid ( &sq, 0, 1 );
	}
	glPopMatrix ( );
	//-----------------------------------------

         GLvoid KillGLWindow( GLvoid )              
     {
    if( fullscreen )             
     {
              ChangeDisplaySettings( NULL, 0 );       
              ShowCursor( true );            
     }
            if( hRC )                
             {
      if( !wglMakeCurrent( NULL, NULL ) )        
       {
          MessageBox( NULL, "Release Of DC And RC Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION );
       }
      if( !wglDeleteContext( hRC ) )        
       {
                     MessageBox( NULL, "Release Rendering Context Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION );
       }
      hRC = NULL;              
       }
    if( hDC && !ReleaseDC( hWnd, hDC ) )          
     {
        MessageBox( NULL, "Release Device Context Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION );
        hDC=NULL;                // Установить DC в NULL
     }
    if(hWnd && !DestroyWindow(hWnd))            
  {
    MessageBox( NULL, "Could Not Release hWnd.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION );
    hWnd = NULL;               
      if( !UnregisterClass( "OpenGL", hInstance ) )       
  {
    MessageBox( NULL, "Could Not Unregister Class.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
    hInstance = NULL;               
  }
}
 BOOL CreateGLWindow( LPCWSTR title, int width, int height, int bits, bool fullscreenflag )
остальное не поместилось
Ada_A вне форума Ответить с цитированием
Старый 27.06.2012, 19:27   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на что ругается и как?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.06.2012, 19:40   #3
Ada_A
 
Регистрация: 24.06.2012
Сообщений: 6
По умолчанию

ругается громко. почти матом.
1>c:\program files\microsoft visual studio 10.0\vc\include\gl\glaux.h(17): warning C4068: неизвестная директива pragma
1>c:\program files\microsoft visual studio 10.0\vc\include\gl\glaux.h(374): warning C4068: неизвестная директива pragma
1>c:\27-06\27-06\1.cpp(83): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\27-06\27-06\1.cpp(83): error C2556: int glPushMatrix(void): перегруженная функция отличается от "void glPushMatrix(void)" только возвращаемым типом
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1044): см. объявление "glPushMatrix"
1>c:\27-06\27-06\1.cpp(83): error C2373: glPushMatrix: переопределение; различные модификаторы типа
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1044): см. объявление "glPushMatrix"
1>c:\27-06\27-06\1.cpp(84): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\27-06\27-06\1.cpp(84): error C2365: glTranslatef: переопределение; предыдущим определением было "функция"
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1056): см. объявление "glTranslatef"
1>c:\27-06\27-06\1.cpp(84): error C2078: слишком много инициализаторов
1>c:\27-06\27-06\1.cpp(85): error C2065: theta: необъявленный идентификатор
1>c:\27-06\27-06\1.cpp(85): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\27-06\27-06\1.cpp(85): error C2365: glRotatef: переопределение; предыдущим определением было "функция"
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1052): см. объявление "glRotatef"
1>c:\27-06\27-06\1.cpp(85): error C2078: слишком много инициализаторов
1>c:\27-06\27-06\1.cpp(85): warning C4244: инициализация: преобразование "float" в "int", возможна потеря данных
1>c:\27-06\27-06\1.cpp(86): error C2065: theta: необъявленный идентификатор
1>c:\27-06\27-06\1.cpp(86): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\27-06\27-06\1.cpp(86): error C2365: glRotatef: переопределение; предыдущим определением было "функция"
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1052): см. объявление "glRotatef"
1>c:\27-06\27-06\1.cpp(86): error C2078: слишком много инициализаторов
1>c:\27-06\27-06\1.cpp(86): warning C4244: инициализация: преобразование "float" в "int", возможна потеря данных
1>c:\27-06\27-06\1.cpp(87): error C2065: theta: необъявленный идентификатор
1>c:\27-06\27-06\1.cpp(87): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\27-06\27-06\1.cpp(87): error C2365: glRotatef: переопределение; предыдущим определением было "функция"
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1052): см. объявление "glRotatef"
1>c:\27-06\27-06\1.cpp(87): error C2078: слишком много инициализаторов
1>c:\27-06\27-06\1.cpp(87): warning C4244: инициализация: преобразование "float" в "int", возможна потеря данных
1>c:\27-06\27-06\1.cpp(88): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\27-06\27-06\1.cpp(88): error C2365: glColor3f: переопределение; предыдущим определением было "функция"
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1117): см. объявление "glColor3f"
1>c:\27-06\27-06\1.cpp(88): error C2078: слишком много инициализаторов
1>c:\27-06\27-06\1.cpp(88): warning C4244: инициализация: преобразование "float" в "int", возможна потеря данных
1>c:\27-06\27-06\1.cpp(89): error C2059: синтаксическая ошибка: if
1>c:\27-06\27-06\1.cpp(89): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\27-06\27-06\1.cpp(89): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>c:\27-06\27-06\1.cpp(92): error C2059: синтаксическая ошибка: else
1>c:\27-06\27-06\1.cpp(92): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\27-06\27-06\1.cpp(92): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>c:\27-06\27-06\1.cpp(95): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\27-06\27-06\1.cpp(95): error C2556: int glPopMatrix(void): перегруженная функция отличается от "void glPopMatrix(void)" только возвращаемым типом
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1045): см. объявление "glPopMatrix"
1>c:\27-06\27-06\1.cpp(95): error C2373: glPopMatrix: переопределение; различные модификаторы типа
1> c:\program files\microsoft visual studio 10.0\vc\include\gl\gl.h(1045): см. объявление "glPopMatrix"
1>
1>СБОЙ построения.
Ada_A вне форума Ответить с цитированием
Старый 27.06.2012, 20:47   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
c:\program files\microsoft visual studio 10.0\vc\include\gl\
Откуда эта папка появилась? Почему не используете поставляемую с СДК?
p51x вне форума Ответить с цитированием
Старый 27.06.2012, 21:41   #5
Ada_A
 
Регистрация: 24.06.2012
Сообщений: 6
По умолчанию

в этом может быть проблема?
Ada_A вне форума Ответить с цитированием
Старый 27.06.2012, 21:54   #6
Ada_A
 
Регистрация: 24.06.2012
Сообщений: 6
По умолчанию

как я понимаю вместо
#pragma comment(lib, "glaux.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "opengl32.lib")

нужно
#include "glaux.lib"
#include "glu32.lib"
#include "opengl32.lib"

в таком случае ругается
Не удается открыть файл включение: glaux.lib
поместила в Program Files\Microsoft SDKs\Windows\v7.0A\Include\
и стало еще хуже..

безумное количество ошибок вида
c\program files\microsoft sdks\windows\v7.0a\include\glaux.li b(5): error C2018: неизвестный знак "0x10"
Ada_A вне форума Ответить с цитированием
Старый 27.06.2012, 23:10   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
нужно
Не нужно, ибо бред.

Цитата:
поместила в Program Files\Microsoft SDKs\Windows\v7.0A\Include\
Нафига? Либы хранятся не там.

П.С. Еще раз нафик пихать что-то откуда-то, если все есть в поставке студии?
П.П.С. Забывайте про glaux.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL VC2010 Ada_A Помощь студентам 3 25.06.2012 09:07
C++ OpenGL Kukurudza Общие вопросы C/C++ 4 08.02.2012 18:48
OpenGL в Qt papos Qt и кроссплатформенное программирование С/С++ 2 13.11.2010 23:16
OpenGL Angel of death Помощь студентам 7 22.06.2010 22:58
Ошибка прикомпиляции в Vc2010 attt123 Общие вопросы C/C++ 1 04.04.2010 08:19