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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 19:47   #1
Syn-McJ
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 11
По умолчанию OpenGL, сохранение изображения в файл

Доброго времени суток. Пишу курсовую работу: вращение пирамиды. Изображение вывожу на TPanel с использованием OpenGL. Проблема возникла при попытке вывести изображение в файл - в картинке оказывается пустая панель, будто никакой пирамиды нет.

Код:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
	ghDC = GetDC(Panel1->Handle);

	if(!bSetupPixelFormat(ghDC))
	Close();
	ghRC = wglCreateContext(ghDC);
	wglMakeCurrent(ghDC, ghRC);

	glClearColor(1.0, 1.0, 1.0, 1.0);

	FormResize(Sender);

	glEnable(GL_COLOR_MATERIAL);
	glEnable(GL_DEPTH_TEST);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void __fastcall TForm1::FormResize(TObject *Sender)
{
	ww = 800;
	hh = 500;
	glViewport(0, 0, ww, hh);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-5,5, -5,5, 0,20);
	gluLookAt(0,0,5, 0,0,0, 0,1,0);
	glMatrixMode(GL_MODELVIEW);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TForm1::Draw()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     

	glLoadIdentity();                                     
	glTranslatef(-2.0, 0.0, 0.0);                      
	glRotatef(rtri, 1.0, 1.0, 0.0);                      

	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

	glColor3f(0.0, 0.0, 0.0);
	glBegin(GL_TRIANGLES);
		glVertex3f(0.0, 1.0, 0.0);                       
		glVertex3f(-1.0, -1.0, 1.0);                  
		glVertex3f(1.0, -1.0, 1.0);                                             
		glVertex3f(0.0, 1.0, 0.0);                                     
		glVertex3f(1.0, -1.0, 1.0);                                          
		glVertex3f(1.0, -1.0, -1.0);                  
		glVertex3f(0.0, 1.0, 0.0);         
		glVertex3f(1.0, -1.0, -1.0);                
		glVertex3f(-1.0, -1.0, -1.0);                    
		glVertex3f(0.0, 1.0, 0.0);                      
		glVertex3f(-1.0, -1.0, -1.0);                    
		glVertex3f(-1.0, -1.0, 1.0);                     
	glEnd();

	rtri += 0.2;

	SwapBuffers(ghDC);

}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
	Draw();
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void __fastcall TForm1::Button1Click(TObject *Sender)
{

	Graphics::TBitmap *bm = new Graphics::TBitmap();
	bm->Height = Panel1->Height;
	bm->Width = Panel1->Width;

	BitBlt(bm->Canvas->Handle, 0, 0, ww, hh, ghDC, 0, 0, SRCCOPY);
	bm->SaveToFile("D:\\123.bmp");

	delete bm;
}
Ну и там конечно ещё закрытие окна и т.п., с координатами пирамиды тоже не все гладко, но не это главное.
Помогите, пожалуйста, с сохранением изображения в файл.
Syn-McJ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение части изображения из TImage в файл *.bmp ImmortalAlexSan Общие вопросы Delphi 15 02.08.2010 13:00
Сохранение изображения TWinControl в файл Oburec Общие вопросы Delphi 0 09.05.2010 00:48
сохранение изображения dedyshka Свободное общение 2 21.11.2009 23:43
OpenGL. Деформация изображения. BOBAH13 Общие вопросы C/C++ 2 11.11.2009 14:50
Сохранение заданий на печать в файл изображения JPG DimD Фриланс 1 15.04.2009 19:27