PDA

View Full Version : Gestione memoria video??????


cisc
23-02-2003, 18:58
Spreste dirmi come si gestisce la memoria, in modo da disegnare una "schermata", e poi visualizzarla sullo schermo. Grazie.

matpez
24-02-2003, 00:03
domanda un po' vaga...dipende dal linguaguaggio che vuoi usare...se usi vb ti passo delle funzioni:


Option Explicit

Private Type MEMORYSTATUS
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type

Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
___________________________________________________________________

Public Function GetMemoryStatus(ByVal nFlag As Integer) As Long

Dim MemStat As MEMORYSTATUS

Call GlobalMemoryStatus(MemStat)

Select Case nFlag
Case 0: GetMemoryStatus = MemStat.dwMemoryLoad
Case 1: GetMemoryStatus = MemStat.dwTotalPhys
Case 2: GetMemoryStatus = MemStat.dwAvailPhys
Case 3: GetMemoryStatus = MemStat.dwTotalPageFile
Case 4: GetMemoryStatus = MemStat.dwAvailPageFile
Case 5: GetMemoryStatus = MemStat.dwTotalVirtual
Case 6: GetMemoryStatus = MemStat.dwAvailVirtual
End Select

End Function

poi vedi tu come sistemare al meglio le cose :p

ciaooooooooooooooooo :)

cisc
24-02-2003, 10:37
In pascal? o in C++?

matpez
24-02-2003, 11:57
Quello è VB...cmq le API che ho usato sono usabili benissimo anch epr il C++ però nn so come si fa :p

cionci
24-02-2003, 12:18
In Windows non puoi andare a scrivere direttamente in memoria video...

cisc
27-02-2003, 17:48
infatti io vorrei suggerimenti riguardanti programmazione sotto DOS!!

cionci
27-02-2003, 18:13
La meoria video in testo si trova nel segmento B800...
A partire da B800:0000 ci sono 8 pagine di memoria consecutive in modo testo 80x25...
Ogni pagina è formata da 4000 byte...
Solo la prima pagina è quella visualizzata (da B800:0000 a B800:0FFFF)...

Per ogni carattere c'è una coppia di byte consecutivi...
Il primo indica il codice Ascii da visualizzare ils econdo byte indica il colore...
Il bit più significativo indica se il carattere deve lampeggiare...
I 3 bit successivi indicano il colore dello sfondo del carattere...
I 4 bit meno significativi codificano il colore del carattere...

Per curiosità...a cosa ti serve ?!??!?

cisc
27-02-2003, 18:45
Ho fatto un programma con la grafica avanzata del Pascal, che simula il funzionamento di un ascensore, ma, nei movimenti dell'ascensore ci sono i disurbi creati dal cursore che disegna l'ascensore, quindi vorrei "disegnare" la schermata prima nella memoria video, e oi visualizzarla. Ciao!!!

cionci
27-02-2003, 18:58
Quello che vuoi usare tu si chiama Double Buffering...
Aspetta ti cerco qualche link...

cionci
27-02-2003, 19:06
http://www.giobe2000.it/HW/Ramvideo/Pag/Home.asp

Ho trovato...la funzione si dovrebbe chiamare SetActivePgae :)

http://www.experts-exchange.com/Programming/Programming_Languages/Pascal/Q_10302538.html

DanieleC88
05-03-2003, 19:15
Non so se c'ho preso, ma guardate quest'ottimo esempio. Dimostra, a mio parere, che anche Windows permette l'elaborazione grafica e poi la visualizzazione.

cionci
06-03-2003, 07:22
Originally posted by "DanieleC88"

Non so se c'ho preso, ma guardate quest'ottimo esempio. Dimostra, a mio parere, che anche Windows permette l'elaborazione grafica e poi la visualizzazione.
Questa è un'altra cosa...non significa lavorare direttamente in memoria video ;)

ultio
06-03-2003, 13:36
scusate l'ignoranza...
ma perchè non si possono usare le opengl o le directx??

cionci
06-03-2003, 14:20
Originally posted by "ultio"

scusate l'ignoranza...
ma perchè non si possono usare le opengl o le directx??
Perchè mi sembra che gli serva per il Pascal sotto DOS...

ultio
06-03-2003, 18:27
anche con pascal si possono usare le opengl

cionci
06-03-2003, 19:00
In un programma a 16 bit sotto DOS ?
Comunque la risposta è nel link che ho postato sopra...c'è una funzione per swappare le pagine di memoria video usando la libreria GDI del Turbo Pascal...

cisc
08-03-2003, 17:01
La funzione funziona (scusate il gioco di parole :D ) solo con la libreria bgi standard del turbo pascal, ma non funziona con quella (trovata girando nel forum) che mi permette di usare risoluzioni molto più alte, con 256 colori.

DanieleC88
10-03-2003, 20:04
Originally posted by "cionci"


Questa è un'altra cosa...non significa lavorare direttamente in memoria video ;)

Lo so... solo che comunque permette di agire su un'area di memoria (usata appunto dalla matrice Pict) per poi passarla alla vera immagine... quasi un passaggio da DOS a Windows.