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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 18:24   #1
KrL^^
Пользователь
 
Регистрация: 01.10.2008
Сообщений: 12
По умолчанию [OpenGL] Ошибка в auxInitWindow

В общем какая-то странная ошибка.. Пишу код для вывода конуса:

Код:
#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include "stdlib.h"
double R = 1, H = 2;

void CALLBACK Key_UP(void)
{
	R = R + 0.2;
	H = H + 0.4;
}
void CALLBACK Key_DOWN(void)
{
	R = R - 0.2;
	H = H - 0.4;
}
void DrawCone()
{
	glPushMatrix();     // сохраняем текущие координаты
	glTranslated(0.1,0,0);  // сдвигаемся в точку (2,0,0)
	glRotated(-75, 0.1,0,0); // поворачиваем систему координат
	glColor3d(0,1,0); 
	auxWireCone(R, H);   // рисуем конус
	glPopMatrix();     // возвращаемся к старым координатам
}



void CALLBACK resize(int width,int height)
{
   glViewport(0,0,width,height);
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glOrtho(-5,5, -5,5, 2,12);   
   gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
   glMatrixMode( GL_MODELVIEW );
}    



void CALLBACK display(void)
{
 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 DrawCone();
 auxSwapBuffers();
}


void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};

    GLfloat mat_specular[] = {1,1,1,1};

    auxInitPosition( 50, 10, 400, 400);
    auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
    auxInitWindow( "Glaux Template" );
    auxIdleFunc(display);
    auxReshapeFunc(resize);

	auxKeyFunc(AUX_UP, Key_UP);
	auxKeyFunc(AUX_DOWN, Key_DOWN);


  
    glEnable(GL_DEPTH_TEST);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);


    /*
    * Enter your cod here
    */
    auxMainLoop(display);
}
Далее создаю новый .cpp для цилиндра, копипаст меняю функцию вывода конуса на ф-ю для цилиндра и вылетает..
Код:
error C2664: 'auxInitWindowW' : cannot convert parameter 1 from 'const char [15]' to 'LPCWSTR'
Код:
#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include "stdlib.h"
double  r = 1,height = 1;

void CALLBACK Key_UP(void)
{
	height = height + 0.5;
	
	r = r + 0.4;
}
void CALLBACK Key_DOWN(void)
{
	height = height - 0.5;
	r = r - 0.4;
}
void DrawCylinder()
{
	glPushMatrix();     // сохраняем текущие координаты
	glTranslated(0.1,0,0);  // сдвигаемся в точку (2,0,0)
	glRotated(15, 0.1,0,0); // поворачиваем систему координат
	glColor3d(0,1,0); 
	auxSolidCylinder(r,height);  // рисуем 
	glPopMatrix();     // возвращаемся к старым координатам
}





void CALLBACK resize(int width,int height)
{
   glViewport(0,0,width,height);
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glOrtho(-5,5, -5,5, 2,12);   
   gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
   glMatrixMode( GL_MODELVIEW );
}    



void CALLBACK display(void)
{
 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 DrawCylinder();
 auxSwapBuffers();
}


void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};

    GLfloat mat_specular[] = {1,1,1,1};

    auxInitPosition( 50, 10, 400, 400);
    auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
    auxInitWindow( "Glaux Template" );
    auxIdleFunc(display);
    auxReshapeFunc(resize);

	auxKeyFunc(AUX_UP, Key_UP);
	auxKeyFunc(AUX_DOWN, Key_DOWN);


  
    glEnable(GL_DEPTH_TEST);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);


    /*
    * Enter your cod here
    */
    auxMainLoop(display);
}
В чем причина? Основа кода из учебника тарасова по OpenGL. Пишу в VS 2005
KrL^^ вне форума Ответить с цитированием
Старый 31.08.2015, 10:20   #2
varich
Пользователь
 
Регистрация: 01.03.2013
Сообщений: 22
По умолчанию

попробуй принудительно привести переменную .
чтото вроде
Код:
auxInitWindow((LPCWSTR) "Glaux Template" );
varich вне форума Ответить с цитированием
Старый 31.08.2015, 10:25   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

Ну вам же явно намекают, что параметр у функции юникодовский. Ставьте L перед строками.

Цитата:
попробуй принудительно привести переменную .
И получите веселый текст вместо своей строки.
p51x вне форума Ответить с цитированием
Старый 31.08.2015, 13:29   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от varich Посмотреть сообщение
попробуй принудительно привести переменную .
чтото вроде
Код:
auxInitWindow((LPCWSTR) "Glaux Template" );
в 90% случаев явное приведение говорит что вы что-то делаете не так.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.09.2015, 11:54   #5
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Компилируются без ошибок обе программы.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL в С# LeGAl Общие вопросы .NET 0 30.04.2009 02:15
OpenGL psyke Gamedev - cоздание игр: Unity, OpenGL, DirectX 10 10.07.2008 02:24
Использование OpenGL. Ошибка. IgorKr Общие вопросы Delphi 2 11.04.2008 23:11
OpenGL prizrak1390 Свободное общение 2 07.04.2008 13:43
OpenGL mehmann Общие вопросы Delphi 2 06.02.2007 13:16