Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] pixel

  1. #1
    Utente di HTML.it L'avatar di mhmh
    Registrato dal
    Feb 2002
    Messaggi
    204

    [C] pixel

    Volevo sapere come posso disegnare un semplice pixel in C.
    Grazie:metallica

  2. #2
    Ehm, non ti sembra di essere stato un po` generico .. ? :quipy:

    Piattaforma?

  3. #3
    Utente di HTML.it L'avatar di mhmh
    Registrato dal
    Feb 2002
    Messaggi
    204
    pardon...DOS.Uso DevC++

  4. #4
    Con Dev-C++ puoi fare solo programmi in emulazione DOS sotto Windows, quindi ti devi affidare o all'API, precisamente alla GDI (Graphics Device Interface), oppure a librerie conosciute come DirectX ed OpenGL; se invece vuoi direttamente programmare in DOS.. Dev-C++ non va bene, puoi usare Watcom o Turbo C/C++, e le procedure sono differenti.

    Ciao.

  5. #5
    Ummm... se vuoi, puoi utilizzare assembler (se lo sai).
    Se nn mi sbgalio, dalla locazione 0400h puoi iniziare a scrivere sul bufefr della memoria video, e da li, gestisci la tua grafica.
    #exclude <windows.h>
    Powered by Gentoo GNU/Linux
    Cos'e' l'impossibile se non una questione di tempo?
    Riesumare i post vecchi non e' sbagliato, e' una risposta o la continuazione di un thread. Meglio riesumare che creare di nuovi :]

  6. #6
    Non da Windows, altrimenti *TAC* schermata blu... Quello lo puoi fare in DOS, segmento 0xA000 o A000h:0h (16-bit), o ancora 0xA0000 o A0000h (32-bit). E non serve per forza l`assembly, basta un puntatore far all`indirizzo nel caso di un puntatore a 16-bit o flat per quello a 32-bit... In soldoni:

    codice:
    unsigned char* memoria_video_16bit = MK_FP( 0xA0000, 0 );
    unsigned char* memoria_video_32bit = ( unsigned char* ) 0xA0000;
    Da quell`indirizzo in poi, per tutti i 64k del segmento, ogni byte (per risoluzioni a 256 colori) corrisponde ad un colore della paletta. Il buffer e` lineare, quindi 320x200 a 256 colori (mode 13h) occupano esattamente 64000 bytes. Per colorare un pixel basta assegnare un numero (colore) ad un byte indirizzato a partire da quel puntatore. Se vogliamo, il modo piu` semplice e` trattarlo come un array:

    codice:
    memoria_video_16bit[ 1284 ] = 4;
    Colora il 1285° pixel di rosso (4 in genere), ed a 320x200 significa:

    1285 / 320 = (4+1)^ = 5^ riga
    1285 % 320 = (5+1)^ = 6^ colonna

    La paletta la modifichi direttamente tramite le porte dell`adattatore VGA.

    Questo indirizzo vale per le basse risoluzioni VGA in modalita` reale (16-bit) o protetta (32-bit) e per gli antiquati e iper-ostici Mode X (ARRRGH!). Se invece vuoi usare risoluzioni alte dovresti leggere un minimo sulle specifiche VBE (VESA) perche` il discorso e` un po` piu` articolato.

    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.