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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2012, 04:53   #1
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию ms visual studio и OpenGL ))))

доброго времени суток товарисчи, поручили мне на курсову склепать первую в жизни игру на мелкософт-визуал студии с помощью opengl и дошло дело до наложения текстур. cо счастливым выражением лица я начал компилировать как вдруг на экран вылазиит злющяя ошибка представленая на первой картинке . затем руководствуясь логикой я нажимаю окай и затем я ужаснулся.на экран чудесным образом вылезла ещё более ужасная неведомая "нихарошая кака" представленая на картинке 2

ну и собственно вот мой код:


Код:
#include <gl/glut.h>				// GLUT
#include <gl/GLAUX.H>


unsigned int textures[1];
void LoadTextures()
{
	AUX_RGBImageRec *texture1=auxDIBImageLoadA("D:\tex\tomat.bmp");
	glGenTextures(1, &textures[0]);
	glBindTexture(GL_TEXTURE_2D, textures[0]);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY,
		0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
}
void draw()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_QUADS);
	glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0);
	glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0);
	glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
	glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0);
	glEnd();
	glFlush();
}

void initialize()
{
	LoadTextures();
	glEnable(GL_TEXTURE_2D);
	glClearColor(0.0, 0.0, 0.0, 1.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-0.4, 0.4, -0.4, 0.4, -10.0, 10.0);
	glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
	glutInitWindowSize(400, 400);
	glutInitWindowPosition(100,200);
	glutCreateWindow("ololo");
	glutDisplayFunc(draw);
	initialize();
	glutMainLoop();
}
а на картинке 3 вы можете узреть тот ужасный текст, который отображаеться в окне вывод.

вот и спрашиваеться с какого перепугу это всё происходит? картинка в формате BMP. размер 256x256. мне кажеться что здесь именно со студией что-то не так. посоветуйте пожалуйста чтонибуть
Изображения
Тип файла: jpg 1.jpg (86.7 Кб, 166 просмотров)
Тип файла: jpg 2.jpg (117.7 Кб, 123 просмотров)
Тип файла: jpg 3.jpg (182.2 Кб, 127 просмотров)

Последний раз редактировалось sinestro; 24.02.2012 в 05:12.
sinestro вне форума Ответить с цитированием
Старый 24.02.2012, 11:03   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

прочитайте внимательно ошибку на первом рисунке.

вы не в курсе что вы неверно записали текстовую константу?
экранировать спец символы кто будет?
Код:
"D:\\tex\\tomat.bmp"
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.02.2012, 16:25   #3
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

всё бы хорошо, но вот только если писать
Код:
"D:\\tex\\tomat.bmp"
то оно чудесным образом компилируеться, но текстуры на экране не появляеться. рисуеться только белый фон( откуда ему взяться - не понимаю, ведь цвет очистки экрана стоит чёрный) . ошибку в отдельном окне не выбивает, а вот в окне вывода всё те же строки

""кораблик.exe": Загружено: "D:\мои проги\visual2010\кораблик\Debug\кор аблик.exe", Символы загружены.
"кораблик.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll" , Невозможно найти или открыть файл PDB
"кораблик.exe": Загружено: "C:\Windows\SysWOW64\kernel32.d ll", Невозможно найти или открыть файл PDB" и т.д.

я даже попробовал впихнуть картинку в папку с проэктом и изменил путь:
Код:
AUX_RGBImageRec *texture1=auxDIBImageLoadA("tomat.bmp");
и всёравно не помогло....
я просто в недоумении

Последний раз редактировалось sinestro; 24.02.2012 в 19:26.
sinestro вне форума Ответить с цитированием
Старый 25.02.2012, 05:17   #4
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

я тут рылся в инете и надыбал библиотеку DevIL(OpenIL) с её помощью можно тоже загружать текстуры и работать с ними , при этом оно может работать совместно с OpenGL . Если кто-то может, приведите пожалуйста самый простой РАБОЧИЙ код с наложением текстуры с помощью девила. я нашол только документацию к нему, а примеров кода на с++ нет(( ну или любой другой способ загрузки текстуры с маленьким примером
sinestro вне форума Ответить с цитированием
Старый 27.02.2012, 17:38   #5
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

я чуток поменял код
Код:
#include <gl/glut.h>				// GLUT
#include <gl/GLAUX.H>


unsigned int textures[1];
void LoadTextures()
{
	AUX_RGBImageRec *texture1=auxDIBImageLoadA("tomat.bmp");
	glGenTextures(1, &textures[0]);
	glBindTexture(GL_TEXTURE_2D, textures[0]);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY,
		0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
}
void draw()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_QUADS);
	glColor3f(0.0,0.0,0.0);
	glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0);
	glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0);
	glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
	glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0);
	glEnd();
	glFlush();
}

void initialize()
{
	LoadTextures();
	glEnable(GL_TEXTURE_2D);
	glClearColor(0.0, 0.0, 0.0, 1.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-0.4, 0.4, -0.4, 0.4, -10.0, 10.0);
	glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
	glutInitWindowSize(400, 400);
	glutInitWindowPosition(100,200);
	glutCreateWindow("ololo");
	initialize();
	glutDisplayFunc(draw);
	glutMainLoop();
}
и теперь оно мне выдаёт "Failed to open DIB file". есть у когонибуть по этому поводу мысли?
sinestro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработать программу(Visual Studio/C++/Opengl) Fscivi Фриланс 3 31.05.2010 12:25
Expression Studio и Visual Studio 2010 ждать ли русские версии? Casper-SC Свободное общение 31 25.05.2010 14:31
Как компилировать в Visual Studio программу с OpenGL? ROD Помощь студентам 3 01.04.2010 22:06
Visual Studio Standard 2008 против Visual Studio Express 2008. Стоит ли покупать? Casper-SC Софт 4 31.12.2009 11:46
VISUAL STUDIO 2008 defaul language - как переключить в VISUAL STUDIO 2008 язык программирования, использ Эйнж Общие вопросы C/C++ 0 27.12.2009 20:39