두 개의 이미지가 있고 둘 다 24 색 .bmp 32x32 픽셀입니다. OpenGL과 함께로드하면 OpenGL로 다른 하나를로드하면 흑백 라인 만 표시됩니다.OpenGL에서로드 한 이미지가 올바르게 표시되지 않는 이유는 무엇입니까?
다른 내용이있을 수 있으므로 이미지 중 하나를 표시하지 않을 수 있습니까?
이 하나의 코드에서 작동하지 않습니다
grass1.bmp http://turboimg.com/p/aur1361433642q.bmp
이 하나의 코드에서 작업을 수행합니다
grass.bmp http://turboimg.com/p/udj1361433715c.bmp
는 또한 정보의 크기와 파일 헤더 크기를 확인했습니다. 두 이미지는 모두 정보가 40이고 파일 크기가 14입니다. biWidth와 BiHeight 이미지는 여전히 32x32입니다.grass := Readbitmap('Grass.bmp',sGrass,tGrass);
그리고 이미지 데이터를 얻는 방법 (해야한다 :
나는 이미지 잔디
//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
와 진수 질감 방법이 보여줍니다 포인터 등 같은 채워져 다른 이미지와 함께 작동하는 것처럼 확인해도 좋습니다. 두 이미지를 다르게 만들 것이라고 생각합니다.)
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;
그것은 힘들지만, 예를 점검하기위한 시도 : 그래서 내 생각 엔 당신이 색상 채널의 회전을두고
format
매개 변수의GL_BGR
값으로glTexImage2D
함수를 호출 할 수 있다는 것입니다 'TBitmapInfoHeader' 구조체의'biHeight' 값. 이것은 음수 값일 수 있으며 해당 값을 전달하는 함수는 음수 값을 가져 가지 않을 수 있습니다. 그러나 그 이미지를 모르고서 당신이 그'ReadBitmap' 메소드로 당신이하고있는 것을 보여주지 않았기 때문에 그것은 단지 추측입니다. – TLama나는 가치관에 차이가 있는지를 시험하고 보게 될 것이다. 나에게 몇 분을 준다. 그러나 ReadBitmap을 사용하면 데이터를 opengl에 보내기 전에 infoheader와 파일 헤더를 제거하는 것만으로 충분합니다. 데이터를 "잔디"라는 포인터에 저장합니다. 그것은 어디에서 최대 사용됩니다. 사진에 대한 링크를 제공 할 수는 있지만 어떤 방식 으로든 사진 사이트에 업로드하면 확실하지는 않습니다. 그러나 몇 분 안에 둘 다 할 것입니다. –
이미지가있는 소식이 업데이트되었습니다. 헤더 정보/높이 정보 –