안녕하세요 스페로 입니다.
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\borlandc\\bgi");
위 함수로 그래픽 모드를 잡으신다면
640x480 16칼라 입니다.
아주 오래된 게임프로그래밍 같은 책을 보면
putpixel()같은 함수로는 프로그래밍 하지 않습니다.
저도 지금은 책이나 자료 그리고 기억이 나지 않아 어떻게 설명 드릴수는 없지만
오래된 도스용 게임프로그래밍이나 그래픽에 관련된 C책을 보셔야 할겁니다.
bios를 이용해서 저수준 그래픽 모드를 잡고
직접 그래픽 번지 B000H 인가?? 이용해서
직접 그래픽 메모리에 값을 세팅하는 방법으로 점찍기 함수부터 구현 한답니다.
intx86같은 함수들과 union regs 공용체를 이용해서 거의 어셈블리 같은거랑 짬뽕으로..
하던 기억이 나지만
책을 보지 않는 이상 어떻게 답변을 드리거나 자료를 구할수가 없네요
그럼^^
bestheat 님이 쓰신 글 :
: 안녕하세요. 모두들 수고가 많읍니다.
: 작업환경은 borland c dos 입니다.
: 사이즈가 176X220인 빨간색 8bit(256 color) bmp파일을 읽어서
: 화면에 디스플레이하는 소스입니다.
:
: #include<stdio.h>
: #include<conio.h>
: #include<math.h>
: #include<dos.h>
:
: #define WIDTH 176
: #define HEIGHT 220
:
: void main(void)
:
: {
:
: int x,y,k,ix,iy,midx,midy;
: unsigned int i,input;
: int gd=DETECT,gm;
:
: FILE *fp;
:
: fp=fopen("c:\\bmp\\red256.bmp","rb");
: initgraph(&gd,&gm,"c:\\borlandc\\bgi");
:
: midx=getmaxx()/2;
: midy=getmaxy()/2;
:
: ix=midx-WIDTH/2;
: iy=midy+HEIGHT/2;
:
: rewind(fp);
:
: for(k=1;k<=1078;k++) // 8bit (256 color) BMP Hearder
:
: input=fgetc(fp);
:
: for(y=0;y<HEIGHT;y++){
:
: for(x=0;x<WIDTH;x+=1){
:
: input=fgetc(fp);
:
: putpixel(ix+x,iy-y,input);
:
: }
: }
: getch();
: closegraph();
: fclose(fp);
: }
:
: 위에서 putpixel함수에서 input 값이 hex로 'EO'가 나오는데
: putpixel 함수가 제대로 나오지 않네요.
: putpixel 함수는 0~15(16color) 까지 밖에 표현못하는데(conio.h에서)
: 256color를 표현하려면 어떤 함수를 써야 하는지 궁금합니다.
: 아무로 찾아도 없어서 고수님들께 부탁드립니다.
: (비주얼이 아닌 도스모드에서요)
:
|