Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> glutGet в скриншоте 
:(
    Опции темы
ovod
Дата 8.7.2004, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 5.6.2004

Репутация: нет
Всего: 1



Делаю

Код
{$APPTYPE CONSOLE}
program screenshot;

type
GLint   = Integer;
GLenum  = Cardinal;
GLubyte = Byte;
GLsizei = Integer;

PGLint  = ^GLint;

const
GL_FRONT             = $0404;
GL_PACK_ALIGNMENT    = $0D05;
GL_READ_BUFFER       = $0C02;
GLUT_WINDOW_WIDTH    = 102;
GLUT_WINDOW_HEIGHT   = 103;
GL_RGB               = $1907;
GL_UNSIGNED_BYTE     = $1401;


Procedure glGetIntegerv(pname: GLenum; params: PGLint);
                           stdcall; external 'OPENGL32.DLL';
Procedure glReadBuffer(mode: GLenum);
                           stdcall; external 'OPENGL32.DLL';
Procedure glPixelStorei(pname: GLenum; param: GLint);
                           stdcall; external 'OPENGL32.DLL';
Procedure glReadPixels(x: GLint; y: GLint; width: GLsizei; height: GLsizei;
                      format: GLenum; atype: GLenum; ppixels: Pointer);
                           stdcall; external 'OPENGL32.DLL';
function glutGet(gltype: GLenum):integer;
                           stdcall; external 'GLUT32.DLL';

var
oldbuffer:PGLint;
oldalignment:PGLint;

procedure ScreenShotToFile(fname:string);
var
fp:file;
ww:integer;
wh:integer;
npixels:integer;
pixels:array of GLubyte;
p:pointer;
begin

// Save the read buffer state.
glGetIntegerv( GL_READ_BUFFER, oldbuffer );
glReadBuffer( GL_FRONT );

// Save the alignment state.
glGetIntegerv( GL_PACK_ALIGNMENT, oldalignment );
glPixelStorei( GL_PACK_ALIGNMENT, 1);


ww := glutGet( GLenum ( GLUT_WINDOW_WIDTH ) );
wh := glutGet( GLenum ( GLUT_WINDOW_HEIGHT ) );

Код
npixels:=ww*wh;
setlength(pixels,length(pixels)+npixels*3);

// Restore the GL state.
glPixelStorei( GL_PACK_ALIGNMENT, oldalignment^ );
glReadBuffer( oldbuffer^ );
end;

begin
 ScreenShotToFile('scr.bin');
end.


В красном месте ошибка о чтении памяти. В чем дело? Как пофиксить?
PM MAIL   Вверх
Girder
Дата 9.7.2004, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Проверь если glutGetWindow=0 то нет текущего окна, размеры которого ты хочеш узнать.


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0749 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.