У меня два изображения, оба - 24 цвета .bmp 32x32 пикселей. Если я загружаю один с OpenGL, он работает, если я загружаю другой OpenGL, он просто показывает черные и белые линии.Почему OpenGL правильно отображает загруженное изображение?
Есть ли что-то другое, что может быть другим, не позволяя одному из изображений показывать?
Это один не работает в коде:
grass1.bmp http://turboimg.com/p/aur1361433642q.bmp
Это один делает работу в коде:
grass.bmp http://turboimg.com/p/udj1361433715c.bmp
Также проверяется информация размер и размер заголовка файла. Оба изображения были 40 на info и 14 на размер файла. Оба изображения biWidth и BiHeight были 32x32.
Это показывает, как я текстурировать гекс с травой изображения
//GRASS
glTexImage2d(GL_TEXTURE_2D,Level,Colorcomps,sGrass,tGrass,Border,GL_RGB,GL_UNSIGNED_BYTE,grass);
glLoadName(1);
glBegin(GL_POLYGON);
for I := 0 to 6 do
begin
glTexCoord2f(COS(i/6.0*2*PI),SIN(i/6.0*2*pi));
glVertex3f((((COS(i/6.0*2*PI)/12)+offsetx)+0.2),((SIN(i/6.0*2*pi)/12)+offsety),-2);
end;
glEnd;
grass
является указателем и заполняется следующим образом:
grass := Readbitmap('Grass.bmp',sGrass,tGrass);
И как я могу получить данные изображения (которые должны быть ОК, поскольку он работает с другими изображениями, я действительно думаю, что это что-то еще об изображении, который сделает два разных)?
Function TFCreateMap.ReadBitmap(const FilePath:String;var sWidth,tHeight:GLsizei):pointer;
const
szh=SizeOf(TBitmapFileHeader);
szi=SizeOf(TBitmapInfoHeader);
var
bmpfile: file;
bfh:TBitmapFileHeader;
bmi:TBitmapInfoHeader;
t:byte;
x,
fpos,
size: integer;
begin
assignfile(bmpfile,FilePath);
reset(bmpfile,1);
size := FileSize(bmpfile)-szh-szi;
blockread(bmpfile,bfh,szh);
if bfh.bfType<>$4D42 then
raise EinvalidGraphic.Create('Invalid Bitmap');
blockread(bmpfile,bmi,szi);
with bmi do
begin
sWidth := biWidth;
tHeight := biHeight;
end;
getmem(result,size);
blockread(bmpfile,result^,size);
for x := 0 to sWidth*tHeight-1 do
with TWrap(result^)[x] do
begin
t := r;
r := b;
b := t;
end;
end;
Трудно сравнивать эти изображения, если мы их не имеем, но попробуйте для проверки экземпляра значение 'biHeight' структуры' TBitmapInfoHeader'. Это может быть отрицательное значение, и, возможно, функция, с которой вы передаете это значение, не принимает отрицательных значений. Но это просто предположение, поскольку я не знаю этих изображений, и вы не показали, что вы делаете с помощью этого метода ReadBitmap. – TLama
Я проверю и посмотрю, есть ли разница в значениях, дайте мне несколько минут. Но с помощью ReadBitmap я просто удаляю заголовок и заголовок файла перед отправкой данных в opengl. Хранение данных в указатель под названием «трава». Где он используется вверх. Я могу попытаться предоставить ссылки на изображения, но не уверен, загрузил ли их на сайт фотографии, если он каким-либо образом изменит их. но сделают оба в течение нескольких минут. –
обновленный пост с изображениями. и информация о заголовке/высоте –