PMG

Форумы по созданию игр
Текущее время: 29 мар 2024 13:57

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Как определить обьем занимаемой видеопамяти?
СообщениеДобавлено: 08 фев 2006 21:35 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Читал что люди используют DirDraw.GetCaps , кто - то еще как то...

Может кто поделится готовым классом? (желательно с инициализацией)

Почему сам ненапишу?) я пишу под OGL и далек от DX (покачто)...

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 мар 2006 15:41 
Не в сети
Любитель

Зарегистрирован: 15 авг 2005 21:32
Сообщения: 46
Откуда: NSK
Странно, форум про DirectX.... Но из ходя из количества ответов...
В этот раздел заходят только новички, либо жиды.
Ну что-ж пришлось копать мне самому, а как нехотелось после OGL...
Но я не жмот (встречал таких), и поэтому делюсь с новичками. К томуже судя поколичеству просмотров этой темы интересует она многих.
Файл: VideoMemDbg.H
Код:
#ifndef __VideoMemDbg_H__
#define __VideoMemDbg_H__
/*
Класс для получения информации о количестве используемой и свободной видеопамяти.
(помимо этого содержит и другую информацию)
=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\
1.Класс был создан для личного пользования.
2.Как-то задался я целью узнать количество свободной и занятой видеопамяти,
  но поспрашивав у людей пришел к выводу что половина из них незнает.
  Другой немного меншей половине это незачем и голову этим негрели.
  И маленькая горсточка нехочет делтся данной информацией.
  Покопав Gamdev, и несколько других сайтов нашел только упоминания
  "копайте в сторону DDRAW" и никакой практической информации.
  Я как програмист использующий OpenGL неслишком то горел желанием лезть в дебри
  DirecX и его DDRAW, но никуда неденешся... Пришлось брать литературу и колупаться.
  Вот что получилось вы видите.
3.BY DDMZ [Ивахненко Вячеслав] /Новосибирск - HTTP://DDMZ.COM.RU
4.Распространяется как есть, если у вас отформатируется винт то в этом моей вины 99% нету.
=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/
Пример использования
#include <VideoMemDbg.H>
C_VIDEODBG VIDBG;

main(){
InitProgram;
InitOpenGL;
VIDBG.Init();
   PlayGame
   {
      ......Game....
      #ifdef _DEBUG
      VIDBG.UpdateCaps();
      //VIDBG.ddCaps.dwVidMemFree; //количество свободной
      //VIDBG.ddCaps.dwVidMemTotal; //количество занятой
      printf (интересующие вас параметры см пример[2]); 
      #endif
   };
};
Пример[2]:
printglString("USED: %10i FREE: %10i Total: %10i [BYTES]"
   ,VIDBG.ddCaps.dwVidMemTotal-VIDBG.ddCaps.dwVidMemFree,
   VIDBG.ddCaps.dwVidMemFree,VIDBG.ddCaps.dwVidMemTotal);
---------------------------------------------------------------------------------
*/

#include <d3dtypes.h>
#include <ddraw.h>
#pragma comment(lib, "ddraw.lib")
//ВНИМАНИЕ!!! Должно инициализироватся только после инициализации OPENGL
#define __C_VIDEODBG_INIT //Означает что инициализация производится через отдельную функцию


class C_VIDEODBG{
private:
//в ddCapsHEL содержаться т.н. capabilities of the Hardware Emulation Layer (HEL),
//в ddCaps, соответственно, capabilities of the device driver (the hardware).
//ddInitCaps - содержит стартовые значения чтобы сравнивать как они изменились
//            в процессе работы
public:
   DDCAPS ddCaps;
   DDCAPS ddCapsHEL;
   DDCAPS ddInitCaps; //тут стартовые параметры при инициализации
   LPDIRECTDRAW m_pDD; //вдруг кто сам захочет чегонить получить без класса.
   DDCAPS* GetCaps(void); //возвращает указатель на ddCaps
   DDCAPS* GetCapsHEL(void); //возвращает указатель на ddCapsHEL
   void GetCaps(DDCAPS* ddCaps); //Передаем как в обычный GC, ну а HEL кому он нужен?)
   void UpdateCaps(void); //обновляем Capsы, и работаем потом с ними через класс
   C_VIDEODBG(); //инициализация
   ~C_VIDEODBG(); //завершение работы
#ifdef __C_VIDEODBG_INIT
   void Init(void); //Инициализация после обьявления класса
#endif
};
//------------------------------------------------------
C_VIDEODBG::C_VIDEODBG(){
m_pDD=NULL;
#ifdef __C_VIDEODBG_INIT
};
void C_VIDEODBG::Init(void){
#endif
//create
DirectDrawCreate( NULL, &m_pDD, NULL );
ddCaps.dwSize=sizeof(ddCaps);
ddInitCaps.dwSize=sizeof(ddInitCaps);;
ddCapsHEL.dwSize=sizeof(ddCapsHEL);
if( m_pDD )m_pDD->GetCaps(&ddInitCaps,&ddCapsHEL);
};
//-------------------------------------------------------
DDCAPS* C_VIDEODBG::GetCaps(void){
   if( m_pDD )m_pDD->GetCaps(&ddCaps,&ddCapsHEL);
   return &ddCaps;
};
//-------------------------------------------------------
DDCAPS* C_VIDEODBG::GetCapsHEL(void){
   if( m_pDD )m_pDD->GetCaps(&ddCaps,&ddCapsHEL);
   return &ddCapsHEL;
};
//-------------------------------------------------------
void C_VIDEODBG::GetCaps(DDCAPS* ddCaps){
   if( m_pDD )m_pDD->GetCaps(ddCaps,&ddCapsHEL);
};
//-------------------------------------------------------
void C_VIDEODBG::UpdateCaps(void){
   if( m_pDD )m_pDD->GetCaps(&ddCaps,&ddCapsHEL);
};
//-------------------------------------------------------
C_VIDEODBG::~C_VIDEODBG(){
//destroy
if( m_pDD ) m_pDD->Release();
};
//-------------------------------------------------------
#endif


Прочту все ваши мнения и предложения.

_________________
Хочу иметь.... много компьютеров, много денег, и быть известным. Но я не Гилл Бетс =))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 мар 2006 12:40 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Увы, не чем не могу помочь, так как с DX не работал.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 мар 2006 12:46 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Насчет жидов - это ты лишнее сказанул. А насчет профессионалов можно сказать однозначно - они как правило отвечать на такие вопросы не будут, так как у них свои профессиональные делишки. И посмотри на результаты голосования на PMG:
http://opros.nodex.ru/2000/fast-cgi-bin ... ?&id=37413

На сайт зашел пока один, одинокий профессионал :joke:

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB