Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 2.787 pregleda

Najnovija ↓

Nece da mi iscrta pixel na ekranu !? 22.05.2005. u 01:58 · pre 261 mesec #1
Koristim WinXP i borlandov kompajler tc.
Kod kompajliram naredbom tcc pixel.c


Evo koda:

#include <dos.h>

void set_video_mode(unsigned char mode)
{
union REGS regs;
regs.h.ah = 0x00;
regs.h.al = mode;
int86(0x10,&regs,&regs);
return;
}

void plot_pixel_fast(int x,int y,unsigned char color)
{
unsigned char *VGA = (unsigned char *)0xA0000000L;
unsigned short offset = 320*y+x;
VGA[offset] = color;
return;

}

void main()
{
set_video_mode(0x13);/*256 color video mode*/
plot_pixel_fast(10,10,15);
return;
}

Potpis
eX
Re: Nece da mi iscrta pixel na ekranu !? 22.05.2005. u 02:40 · pre 261 mesec #2
Rijesio sam problem !!!!
Kao prvo trebalo je kompajlirati u LARGE MODU ,tj.
tcc -ml pixel.c

Kao drugo trebalo je funkciju za crtanje pixela staviti u neku petlju da popuni cijeli ekran bojom jer mi je onako fatalo slucajne vrijednosti iz memorije i bile su mi nebuloze na ekranu.Probajte ovo:

#include <stdlib.h>
#include <dos.h>

void set_video_mode(unsigned char mode)
{
union REGS regs;
regs.h.ah = 0x00;
regs.h.al = mode;
int86(0x10,&regs,&regs);
return;
}

void plot_pixel_fast(int x,int y,unsigned char color)
{
unsigned char *VGA = (unsigned char *)0xA0000000L;
unsigned short offset = y*320+x;
VGA[offset] = color;
return;

}

void main()
{
int x,y,color;
unsigned short i;

set_video_mode(0x13);
while(1)
for(i=0;i<50000L;i++)
{
x=rand()%320;
y=rand()%320;
color=rand()%256;
plot_pixel_fast(x,y,color);
}


}

Pozdrav...
Potpis
eX
Re: Nece da mi iscrta pixel na ekranu !? 23.05.2005. u 15:28 · pre 261 mesec #3
EXeX, na XP-u koristis arhaicne BIOS pozive za rad sa grafikom? Moze li se postaviti pitanje zasto? :)
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: Nece da mi iscrta pixel na ekranu !? 23.05.2005. u 23:12 · pre 261 mesec #5
Hehehe, pa 3D lib za crtanje tachke je kao maljem na komarca.

Nego mani se DOS poziva, to nije arhaichno, to je kriminal! :)
Odaberi neku od GUI biblioteka (imash saveta na es-u koliko ti volja).
Re: Nece da mi iscrta pixel na ekranu !? 26.05.2005. u 01:39 · pre 261 mesec #7
Nije stvar u bibliotekama,to je bar lako za koristiti.
Prije svega mene zanima kako to bas sve radi i krenuo sam od početka.
Dakle krenuo sam sa VGA programiranjem,a naravno da se neću na tome zadržati.
A konačni cilj je sklepati neki OS,pa osim bootloadera,GTD-a,ITD-a,ISRS-a itd...
potrebno je i napisati neki oblik drajvera koji će ispisati nešto na monitoru.Pa kako sam krenuo u izučavanje naletio sam na neke tutore i eto malo se izmedju ostaloga pozabavio ovime.

Izmedju ostaloga neradi se o arhaicnima DOS prekidima i funkcijama,vec se radi o standardiziranim BIOS interaptima.I jos malo asma i dosta C-a moze se sklepati dobar OS.

P.S. Izgleda još je veći gušt u asm-u programirati grafiku.E to je umjetnost.:)

Pozdrav.
Potpis
eX
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme