Grafika Direct 3D

0

Witam,
Mam pytanko, mianowicie dlaczego nie chce wyświetlić mi grafiki w tym kodzie, poustawiałem juz chyba wszystko co sie da, wgrałem SDK (June 2010) i uzywam Visual studio 2010.Poniżej w załaczniku macie ten kod:

0

Brakuje plików nagłówkowych, więc nie skompiluję twojego kodu – to raz.
A nie napisałeś dokładniej co to znaczy „nie chce wyświetlić mi grafiki”, to dwa.

W problemie więc za bardzo nie pomogę.
Mogę natomiast podpowiedzieć lepszy sposób ładowania tekstury z pliku, używając wbudowanego w Windows mechanizmu.

Dodać linkerowi windowscodecs.lib.

inicjalizacja:

#include <wincodec.h>

IWICImagingFactory *factory;

CoInitialize(NULL);
CoCreateInstance(CLSID_WICImagingFactory,
                 NULL,
                 CLSCTX_INPROC_SERVER,
                 IID_IWICImagingFactory,
                 (LPVOID*)&factory);

Jedną „fabrykę” można używać do ładowania wielu plików.

Wczytywanie pliku:

IWICBitmapDecoder *decoder;
factory->CreateDecoderFromFilename(L"plik.png", NULL, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &decoder);
IWICBitmapFrameDecode *frame;
decoder->GetFrame(0, &frame);

Załadowana bitmapa jest pod zmienną frame. Można pobrać rozmiar przez frame->GetSize(), format przez frame->GetPixelFormat(), dane przez frame->CopyPixels().

Pamiętać o zwolnieniu pliku:

frame->Release();
decoder->Release();

Oraz całej biblioteki:

factory->Release();
0

Nie moge dolaczyc nagłowkow, skopije je w tresc. wyswietla tylko okno z kolorem niebieskim mialo byc do tego szaro bialy kwadrat

0

Nagłowki do plików:

/ mrDataTypes.h /

/* Dołaczaj ten plik tylko raz */
#pragma once

/* Podstawowe definicje typów */
typedef char mrInt8;
typedef unsigned char mrUInt8;
typedef short mrInt16;
typedef unsigned short mrUInt16;
typedef long mrInt32;
typedef unsigned long mrUInt32;
typedef int mrInt;
typedef unsigned int mrUInt;

typedef float mrReal32;
typedef double mrReal64;

/* Definicje złożone */
enum mrBool32
{
mrFalse = 0,
mrTrue = 1,

mrBool32_Force32           = 0xFFFFFFFF

};

/ mrError.h /
/ Include this file only once /
#pragma once

/* Error codes */
enum mrError32
{
mrNoError = 0,
mrErrorRegisterClass = 1,
mrErrorInitDirect3D,
mrErrorGetAdapterDisplayMode,
mrErrorCreateDevice,
mrErrorNotBitmapFile = 0,
mrErrorBitmapNotSupported = 0,
mrErrorPresent,
mrErrorBeginScene,
mrErrorEndScene,
mrErrorClear,

mrError32_Force32 = 0xFFFFFFFF
};

/ 'mrRGBAImage.h' /

/* Mirus base types header /
#include "mrDatatypes.h"
/
Mirus error definitions header /
#include "mrError.h"
/
Windows header file /
#include <windows.h>
/
File stream header file /
#include <fstream>
using namespace std;
/
Include this file only once */
#pragma once

/* Mirus RGBA image class /
class mrRGBAImage
{
protected:
/
Image size */
mrUInt32 m_iWidth;
mrUInt32 m_iHeight;

/* Image buffer */
mrUInt32 * m_piImageBuffer;

public:
/* Constructor / Destructor */
mrRGBAImage (void);
~mrRGBAImage (void);

/* Operators */
mrRGBAImage & operator = (mrRGBAImage & rkImage);

/* Load image from Windows bitmap */
mrError32 LoadFromBitmap (LPSTR lpszFilename);

/* Return the timer information */
mrUInt32 GetWidth (void);
mrUInt32 GetHeight (void);
mrUInt32 GetColor (mrUInt32 iX, mrUInt32 iY);
mrUInt32 * GetImageBuffer (void);
};

/ 'mrTimer.h' /

/* Nagłowki typów bazowych Mirus /
#include "mrDatatypes.h"
/
plik nagłówka Windows /
#include <windows.h>
/
Plik nagłowka funkcji czasu */
#include <ctime>

/* Załączaj tylko raz */
#pragma once

/* Klasa mrTimer /
class mrTimer
{
protected:
/
Zmienne zegara sprzętowego */
LARGE_INTEGER m_iFrequency;
LARGE_INTEGER m_iLastQuery;
LARGE_INTEGER m_iDelta;

/* Zmienne czasu i daty */
tm * m_pkTime;

public:
/* Konstruktor / Destruktor */
mrTimer (void);
~mrTimer (void);

/* Aktualizacja zmiennych czasu */
void Update (void);

/* Zwracają stan zegara */
mrReal32 GetDelta (void);
mrUInt32 GetSeconds (void);
mrUInt32 GetMinutes (void);
mrUInt32 GetHours (void);
mrUInt32 GetDay (void);
mrUInt32 GetMonth (void);
mrUInt32 GetYear (void);
};

/ 'mrWindows.h' /

/* Nagłowki typów bazowych Mirus /
#include "mrDatatypes.h"
/
Plik nagłówka Windows /
#include <windows.h>
#include "mrError.h"
/
Załącz plik tylko raz */
#pragma once

/* Szkielet okna Mirus */
class mrWindow
{
protected:
WNDCLASS m_kWndClass;
HWND m_hWindow;
MSG m_kMessage;

public:
/* Konstruktor / Destruktor */
mrWindow (void);
~mrWindow (void);

/* Funkcje manipulacji oknem */
mrError32 Create (HINSTANCE hInstance, LPSTR szTitle,
mrInt iWidth = CW_USEDEFAULT,
mrInt iHeight = CW_USEDEFAULT,
mrUInt32 iStyle = WS_OVERLAPPEDWINDOW | WS_VISIBLE);
static LRESULT CALLBACK WndProc (HWND hWindow, UINT iMessage,
WPARAM wParam, LPARAM lParam);
void Run (void);

/* Funkcje własne */
virtual mrBool32 MessageHandler (UINT iMessage, WPARAM wParam,
LPARAM lParam);
virtual mrBool32 Frame (void) = 0;

/* Dodatkowe funkcje */
void SetPosition (mrInt iWidth, mrInt iHeight);
POINT GetPosition (void);
void SetSize (mrInt iWidth, mrInt iHeight);
POINT GetSize (void);
void Show (mrInt iShow);
};

0

No dobra, program się kompiluje i wyświetla niebieskie okno
dx.png
a jakie jest pytanie?

0

no wlasnie w tym oknie mialo byc szaro- bialy kwadrat ktorego nie ma

0

mniej wiecej cos takiego jak na tym JPG w lewym górnym rogu
surface.jpg

0

Ok, zrobiłem to :)

0

No dobra podpowiem wam :D jeśli odpalicie ten program w directx8 to wszystko wyświetli sie tak jak powinno, a teraz wy musicie mi podpowiedzieć jak przerobic ten kod, żeby działał w directx 9 ??

0

Ok chopaki :) Mój problem został rozwiązany przez samego siebie :) dzięki za pomoc, jak bedziecie chcieli wiedziec piszcie. pozdrawiam

1

Teraz problem jest w tej linii pisze ,ze error C2660: 'IDirect3DDevice9::CreateOffscreenPlainSurface' : function does not take 4 arguments

if (FAILED (mrScreen::GetSingleton ()->GetDevice ()->CreateOffscreenPlainSurface(
m_pkRawImage->GetWidth (),
m_pkRawImage->GetHeight (),
(D3DFORMAT) mrScreen::GetSingleton ()->GetFormat (),
&m_pkD3DSurface)))

1

To wiem, że jest napisane, tylko nie wiem gdzie

0

Dobra juz sobie poradziłem :) informatycy

0

Azarien po prostu przekształciem kod wyzej z Directx8 na directx9 nic więcej i mam to co miałem wykonać, czyli obiecaną grafike :)

0

UUUUUU Co to za błędy??

1>02 Main.obj : error LNK2019: unresolved external symbol "public: __thiscall mrKeyboard::~mrKeyboard(void)" (??1mrKeyboard@@QAE@XZ) referenced in function __unwindfunclet$??0InputWindow@@QAE@XZ$0
1>02 Main.obj : error LNK2019: unresolved external symbol "public: thiscall mrKeyboard::mrKeyboard(void)" (??0mrKeyboard@@QAE@XZ) referenced in function "public: thiscall InputWindow::InputWindow(void)" (??0InputWindow@@QAE@XZ)
1>02 Main.obj : error LNK2019: unresolved external symbol "public: enum mrError32 thiscall mrKeyboard::Init(struct HWND *)" (?Init@mrKeyboard@@QAE?AW4mrError32@@PAUHWND
@@@Z) referenced in function "public: void thiscall InputWindow::Init(struct HINSTANCE *)" (?Init@InputWindow@@QAEXPAUHINSTANCE
@@@Z)
1>02 Main.obj : error LNK2019: unresolved external symbol "public: enum mrBool32 __thiscall mrKeyboard::IsButtonDown(unsigned long)" (?IsButtonDown@mrKeyboard@@QAE?AW4mrBool32@@K@Z) referenced in function "public: virtual enum mrBool32 __thiscall InputWindow::Frame(void)" (?Frame@InputWindow@@UAE?AW4mrBool32@@XZ)
1>02 Main.obj : error LNK2019: unresolved external symbol "public: enum mrError32 __thiscall mrKeyboard::Update(void)" (?Update@mrKeyboard@@QAE?AW4mrError32@@XZ) referenced in function "public: virtual enum mrBool32 __thiscall InputWindow::Frame(void)" (?Frame@InputWindow@@UAE?AW4mrBool32@@XZ)
1>C:\Users\Rusek\documents\visual studio 2010\Projects\14_Rozdział\Debug\14_Rozdział.exe : fatal error LNK1120: 5 unresolved externals

0

Dzięki Azarien już sobie poradziłem z nimi teraz musze rozgryźć znów dlaczego mi chce mi wyświetlać interaktywnej buźki sterowanej za pomocą klawiatury ;/

0

Teraz znów jest taki bład przy kompilowaniu ;/
debug assertion failed!
Program: ...al Studio 2010\Projects\Rozdział\Debug\Rozdział 2.exe
File: f:\dd\vctools\crt_bld\self_x86\crt\src\loctim64.c
Linie: 69

0

Dobra, dałem rady jest kwadracik przesuwający sie po ekranie, tylko jak teraz zrobić zeby zamiast bałego kwadracika była żółta uśmiechnięta buźka?? AAAAAAAAAA

0

Naucz sie jak nalozyc teksture ;)

0

Wie ktoś jak poradzic sobie z błędem Microsoft.CppCommon.targets(393,5): error MSB6006: "rc.exe" exited with code 1. ??

0

DamianPrg właśnie dodałem plik .txt i plik .bmp do resource Files i jakos nie widać tej grafiki czemu??

0

OK. Jak dodać (oczywiście przez .txt dodam je poniżej bużke i plik.txt) do tego kodu plik żeby była widoczna bużka smile.bmp?

/ 'mrMirus.h' /

/* Mirus base types header /
#include "mrDatatypes.h"
/
Mirus timer header /
#include "mrTimer.h"
/
Mirus error definitions header */
#include "mrError.h"

/* Mirus window framework header */
#include "mrWindow.h"

/* Mirus RGBA image header /
#include "mrRGBAImage.h"
/
Mirus texture header /
#include "mrTexture.h"
/
Mirus screen header /
#include "mrScreen.h"
/
Mirus template set header /
#include "mrTemplateSet.h"
/
Mirus surface header /
#include "mrSurface.h"
/
Mirus RGBA image header /
#include "mrRGBAImage.h"
/
Mirus ABO header */
#include "mrABO.h"

/* Mirus mouse header /
#include "mrMouse.h"
/
Mirus keyboard header /
#include "mrKeyboard.h"
/
Mirus joystick header /
#include "mrJoystick.h"
/
Mirus input manager header */
#include "mrInputManager.h"

  • /* 'mrABO.h' /*

/* Nagłówek typów bazowych Mirus /
#include "mrDatatypes.h"
/
Nagłowek identyfikacji błędów Mirus /
#include "mrError.h"
/
Nagłówek tekstury Mirus /
#include "mrTexture.h"
/
Nagłówek animacji Mirus /
#include "mrAnimation.h"
/
Nagłówek grafiki DirectX */
#include <d3d9.h>

/* Załącz ten plik tylko raz */
#pragma once

/* Klasa obiektu animowanego ABO */
class mrABO
{
protected:
mrAnimation * m_pkAnimations;
mrUInt32 m_iCurrentAnimation;

mrUInt32         m_iColor;

mrUInt32         m_iXPosition;
mrUInt32         m_iYPosition;

mrUInt32         m_iWidth;
mrUInt32         m_iHeight;

mrReal32         m_fAngle;
mrReal32         m_fRadius;

/* Tylko w przypadku ładowania z pliku */
mrTexture *      m_pkTexture;

public:
/* Konstruktory / Destruktor */
mrABO (void);
~mrABO (void);

/* Metody manipulujące obiektem ABO */
void Create (mrUInt32 iAnimations, mrAnimation * pkAnimations);
void Update (void);

void SetAnimation (mrUInt32 iAnimation, mrAnimation * pkAnimation);
void LoadFromFile (LPSTR lpszFilename);

mrError32 Render (void);

void Rotate (mrReal32 fAngle, mrUInt32 iAccumulate);

mrBool32 Collide (mrABO & rkABO, mrUInt32 iUseSphere);
mrBool32 ContainsPoint (mrInt32 iX, mrInt32 iY);

/* Metody obsługowe ABO */
void SetCurrentAnimation (mrUInt32 iAnimation);
mrUInt32 GetCurrentAnimation (void);

void SetPosition (mrUInt32 iX, mrUInt32 iY);
void SetSize (mrUInt32 iWidth, mrUInt32 iHeight);
void SetColor (mrUInt8 iAlpha, mrUInt8 iRed, mrUInt8 iGreen,
            mrUInt8 iBlue);
void SetRadius (mrReal32 fRadius);

mrUInt32 GetXPosition (void);
mrUInt32 GetYPosition (void);
mrUInt32 GetHeight (void);
mrUInt32 GetWidth (void);
mrUInt32 GetColor (void);
mrReal32 GetDirection (void);
mrReal32 GetRadius (void);

};

  • /* 'mrAnimation.h' /*

/* Nagłówek typów bazowych Mirus /
#include "mrDatatypes.h"
/
Nagłówek definicji błędów Mirus /
#include "mrError.h"
/
Nagłowek zestawu szablonów Mirus /
#include "mrTemplateSet.h"
/
Nagłówek ekranu Mirus /
#include "mrScreen.h"
/
Plik nagłówka grafiki DirectX */
#include <d3d9.h>

/* Załączaj plik tylko raz */
#pragma once

/* Klasa animacji Mirus */
class mrAnimation
{
protected:
mrTemplateSet m_kTemplateSet;
mrUInt32 m_iFrames;
mrUInt32 m_iCurrentFrame;

mrCellID *       m_pkFramesID;

public:
/* Konstruktory / Destruktor */
mrAnimation (void);
~mrAnimation (void);

/* Metody manipulujące animacją */
void Create (mrTemplateSet * pkTemplateSet, mrUInt32 iFrames, 
          mrCellID * pkPosition);
void Update (void);
mrError32 Render (RECT kDestRect, mrUInt32 iColor, mrReal32 fAngle);

/* Metody obsługowe animacji */
void SetCurrentFrame (mrUInt32 iFrame);
mrUInt32 GetCurrentFrame (void);

};

  • /* 'mrDatatypes.h' /*

/* Include this file only once */
#pragma once

/* Basic type definitions */
typedef char mrInt8;
typedef unsigned char mrUInt8;
typedef short mrInt16;
typedef unsigned short mrUInt16;
typedef long mrInt32;
typedef unsigned long mrUInt32;
typedef int mrInt;
typedef unsigned int mrUInt;

typedef float mrReal32;
typedef double mrReal64;

/* Composed definitions */
enum mrBool32
{
mrFalse = 0,
mrTrue = 1,

mrBool32_Force32             = 0xFFFFFFFF

};

/ 'mrError.h' /

/* Załączaj tylko raz */
#pragma once

/* Kody błędów /
enum mrError32
{
mrNoError = 0,
mrErrorRegisterClass = 1,
/
Komponent graficzny */
mrErrorInitDirect3D = 2,
mrErrorGetAdapterDisplayMode = 3,
mrErrorCreateDevice = 4,
mrErrorPresent = 5,
mrErrorBeginScene = 6,
mrErrorEndScene = 7,
mrErrorClear = 8,
mrErrorNotBitmapFile = 9,
mrErrorBitmapNotSupported = 10,
mrErrorTargaNotSupported = 11,
mrErrorInvalidRawImage = 12,
mrErrorCreateImageSurface = 13,
mrErrorCreateTexture = 14,
mrErrorAddTexture = 15,
mrErrorDrawPrimitive = 16,
mrErrorSetCooperativeLevel = 17,

 /* Komponent komunikacji z użytkownikiem */
mrErrorDInputCreate								= 18,
mrErrorKeyboardCreateDevice						= 19,		
mrErrorKeyboardSetDataFormat					= 20,
mrErrorKeyboardSetCooperativeLevel			    = 21,
mrErrorKeyboardGetDeviceData					= 22,
mrErrorKeyboardAcquire							= 23,
mrErrorMouseCreateDevice						= 24,
mrErrorMouseSetDataFormat						= 25,
mrErrorMouseSetProperty							= 26,
mrErrorMouseSetCooperativeLevel					= 27,
mrErrorMouseGetDeviceData						= 28,
mrErrorJoystickEnumDevices						= 29,
mrErrorJoystickAcquire							= 30,
mrErrorJoystickGetDeviceState					= 31,
mrErrorJoystickSetDataFormat					= 32,
mrErrorJoystickSetCooperativeLevel              = 33,
mrErrorJoystickSetProperty						= 34,

 /* Komponent dźwiękowy */
mrErrorWaveNotSupported							= 35,
mrErrorPlay										= 36,
mrErrorCreateSoundBuffer					    = 37,
mrErrorSoundBufferLock						    = 38,
mrErrorSoundSetVolume					    	= 39,
mrErrorStop										= 40,
mrErrorCreateSoundDevice						= 41,

mrError32_Force32								= 0xFFFFFFFF

};

/ 'mrInputManager.h' /

/* plik nagłówka bazowych typów biblioteki Mirus /
#include "mrDatatypes.h"
/
plik nagłówka definicji błędów biblioteki Mirus /
#include "mrError.h"
/
plik nagłówka Windows /
#include <windows.h>
/
plik nagłówka DirectInput /
#include <dinput.h>
/
plik nagłówka Assert */
#include <assert.h>

/* Załącz ten plik tylko raz */
#pragma once

/* klasa Input Manager biblioteki Mirus /
class mrInputManager
{
protected:
/
obiekty DirectInput */
LPDIRECTINPUT8 m_lpkDInput;

/* Singleton */
static mrInputManager * m_pkSingleton;

public:
/* Konstruktory / Destruktor */
mrInputManager (void);
~mrInputManager (void);

/* procedury manipulacji urządzeniami wejścia */
mrError32 Init (HINSTANCE hInstance);
LPDIRECTINPUT8 GetInput (void);

/* Singleton */
static mrInputManager * GetSingleton (void);

};

/ 'mrJoystick.h' /

/* Nagłówek bazowych typów biblioteki Mirus /
#include "mrDatatypes.h"
/
Nagłówek definicji błędów biblioteki Mirus /
#include "mrError.h"
/
Plik nagłówka klasy InputManager biblioteki Mirus /
#include "mrInputManager.h"
/
Plik nagłówka Windows /
#include <windows.h>
/
Plik nagłówka DirectInput */
#include <dinput.h>

/* Załącz ten plik tylko raz */
#pragma once

/* Funkcja EnumJoysticksCallback /
BOOL CALLBACK EnumJoysticksCallback (
const DIDEVICEINSTANCE * pdidInstance, VOID
pContext);

/* klasa mrJoystick biblioteki Mirus /
class mrJoystick
{
protected:
/
obiekty DirectInput */
LPDIRECTINPUTDEVICE8 m_lpkDIDevice;
DIJOYSTATE2 m_kDeviceData;

public:
/* Konstruktory / Destruktor */
mrJoystick (void);
~mrJoystick (void);

/* Metody obsługujące joystick */
mrError32 Init (HWND hWindow, mrInt32 iMin, mrInt32 iMax, 
             mrInt32 iDeadZone);
mrError32 Update (void);

mrBool32 IsButtonDown (mrUInt32 iButton);
mrBool32 IsButtonUp (mrUInt32 iButton);

mrUInt32 GetXAxis (void);
mrUInt32 GetYAxis (void);

};

/ 'mrKeyboard.h' /

/* nagłówek bazowych typów biblioteki /
#include "mrDatatypes.h"
/
nagłówek definicji błędów biblioteki Mirus /
#include "mrError.h"
/
plik nagłówka InputManager biblioteki Mirus /
#include "mrInputManager.h"
/
plik nagłówka Windows /
#include <windows.h>
/
plik nagłówka DirectInput */
#include <dinput.h>

/* Załącz ten plik tylko raz */
#pragma once

/* klasa Keyboard biblioteki Mirus /
class mrKeyboard
{
protected:
/
obiekty DirectInput */
LPDIRECTINPUTDEVICE8 m_lpkDIDevice;

/* Nasz bufor klawiszy */
mrUInt8              m_iKeyBuffer [256];

public:
/* Konstruktory / Destruktor */
mrKeyboard (void);
~mrKeyboard (void);

/* procedury obsługi klawiatury */
mrError32 Init (HWND hWindow);
mrError32 Update (void);

mrBool32 IsButtonDown (mrUInt32 iButton);
mrBool32 IsButtonUp (mrUInt32 iButton);

};

/ 'mrMouse.h' /

/* nagłówek bazowych typów biblioteki Mirus /
#include "mrDatatypes.h"
/
nagłówek definicji błędów biblioteki Mirus /
#include "mrError.h"
/
Plik nagłówka klasy mrInputManager biblioteki Mirus /
#include "mrInputManager.h"
/
plik nagłówka Windows /
#include <windows.h>
/
Plik nagłówka DirectInput */
#include <dinput.h>

/* Załącz ten plik tylko raz */
#pragma once

/* klasa myszy biblioteki Mirus /
class mrMouse
{
protected:
/
obiekty DirectInput */
LPDIRECTINPUTDEVICE8 m_lpkDIDevice;
DIDEVICEOBJECTDATA m_akDeviceData [8];

public:
/* Konstruktory / Destruktor */
mrMouse (void);
~mrMouse (void);

/* Procedury obsługi myszy */
mrError32 Init (HWND hWindow);
mrError32 Update (void);

mrBool32 IsButtonDown (mrUInt32 iButton);
mrBool32 IsButtonUp (mrUInt32 iButton);
mrUInt32 GetXAxis (void);
mrUInt32 GetYAxis (void);

mrError32 Clear (void);

};

/ 'mrRGBAImage.h' /

/* Nagłówek typów bazowych Mirus /
#include "mrDatatypes.h"
/
Nagłówek definicji błędów Mirus /
#include "mrError.h"
/
Nagłówek Windows /
#include <windows.h>
/
Nagłowek strumienia pliku /
#include <fstream>
/
Plik nagłówka grafiki DirectX /
#include <d3d9.h>
using namespace std;
/
Załącz ten plik tylko raz */
#pragma once

/* Klasa obrazu RGBA biblioteki Mirus /
class mrRGBAImage
{
protected:
/
Rozmiar obrazu */
mrUInt32 m_iWidth;
mrUInt32 m_iHeight;

/* Bufor obrazu */
mrUInt32 *      m_piImageBuffer;

public:
/* Konstruktor / Destruktor */
mrRGBAImage (void);
~mrRGBAImage (void);

/* Operatory */
mrRGBAImage & operator = (mrRGBAImage & rkImage);

/* Ładowanie obrazu z mapy bitowej Windows */
mrError32 LoadFromBitmap (LPSTR lpszFilename);
mrError32 LoadFromTarga (LPSTR lpszFilename);

/* Manipulacja obrazem */
void SetColorKey (mrUInt8 iRed, mrUInt8 iGreen, mrUInt8 iBlue);

void SetWidth (mrUInt32);
void SetHeight (mrUInt32);
void SetColor (mrUInt32 iX, mrUInt32 iY, mrUInt8 iRed, 
            mrUInt8 iGreen, mrUInt8 iBlue, 
            mrUInt8 iAlpha);
void SetImageBuffer (mrUInt32 * pImage);

mrUInt32 GetWidth (void);
mrUInt32 GetHeight (void);
mrUInt32 GetColor (mrUInt32 iX, mrUInt32 iY);
mrUInt32 * GetImageBuffer (void);

};
**
/* 'mrScreen.h' /*

/* Nagłowek typów bazowych /
#include "mrDatatypes.h"
/
Nagłówek funkcji czasu /
#include "mrTimer.h"
/
Nagłówek definicji błędów Mirus /
#include "mrError.h"
/
Plik nagłówka Windows /
#include <windows.h>
/
Plik nagłówka grafiki DirectX /
#include <d3d9.h>
/
Plik nagłówka modułu matematycznego C++ /
#include <math.h>
/
Plik nagłówka Assert */
#include <assert.h>

/* Załączaj plik tylko raz */
#pragma once

/* Własna struktura wierchołka Mirus /
class mrVertex
{
public:
/
Pozycja przetransformowana /
FLOAT m_fX, m_fY, m_fZ, m_fRHW;
/
Kolor /
DWORD m_iColor;
/
Współrzędne tekstury */
FLOAT m_ftU, m_ftV;
};

/* Własny typ wierzchołka Mirus */
#define D3DFVF_MIRUSVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1)

/* Klasa ekranu Mirus */
class mrScreen
{
protected:
LPDIRECT3D9 m_pkD3D;
LPDIRECT3DDEVICE9 m_pkD3DDevice;

mrUInt32 m_iFPS;
HWND m_hWindow;

mrTimer m_kTimer;

mrUInt32 m_iFormat;

/* singleton */
static mrScreen * m_pkSingleton;

public:
/* Konstruktory / Destruktor */
mrScreen (void);
mrScreen (HWND hWindow);

~mrScreen (void);

/* Metody manipulujące ekranem */
mrError32 Init (HWND hWindow);
mrError32 SetMode (mrUInt32 iFullscreen, mrUInt16 iWidth, 
                mrUInt16 iHeight, mrUInt16 iDepth, 
                bool bHardware); 

/* Procedury renderujące */
mrError32 Clear (mrUInt8 iRed, mrUInt8 iGreen, mrUInt8 iBlue, 
              mrUInt8 iAlpha);
mrError32 StartFrame (void);
mrError32 EndFrame (void);

/* Metody rysujące */
mrError32 DrawLine (mrReal32 fX1, mrReal32 fY1, 
                 mrReal32 fX2, mrReal32 fY2, 
                 mrUInt8 iRed, mrUInt8 iGreen, 
                 mrUInt8 iBlue, mrUInt8 iAlpha);
mrError32 DrawRectangle (mrReal32 fX1, mrReal32 fY1, 
                      mrReal32 fX2, mrReal32 fY2, 
                      mrUInt8 iRed, mrUInt8 iGreen, 
                      mrUInt8 iBlue, mrUInt8 iAlpha);
mrError32 DrawCircle (mrReal32 fCenterX, mrReal32 fCenterY, 
                   mrReal32 iRadius, mrUInt8 iRed, 
                   mrUInt8 iGreen, mrUInt8 iBlue, mrUInt8 iAlpha,
                   mrUInt32 iVertices);

/* Inne metody */
mrBool32 IsModeSupported (mrUInt16 iWidth, mrUInt16 iHeight, 
                       mrUInt16 iDepth);
void ShowCursor (mrUInt32 iShowCursor);

/* Metody obsługowe */
LPDIRECT3DDEVICE9 GetDevice (void);
mrUInt32 GetFPS (void);
mrUInt32 GetFormat (void);

mrUInt32 GetBitdepth (void);

/* singleton */
static mrScreen * GetSingleton (void);

};

  • /* 'mrSurface.h' /*

/* Nagłówek bazowych typów Mirus /
#include "mrDatatypes.h"
/
Nagłowek definicji błędów Mirus /
#include "mrError.h"
/
Nagłówek obrazu Mirus RGBA /
#include "mrRGBAImage.h"
/
Nagłówek ekranu Mirus /
#include "mrScreen.h"
/
Plik nagłówka grafiki DirectX */
#include <d3d9.h>

/* Załączaj tylko raz */
#pragma once

/* Klasa powierzchni Mirus /
class mrSurface
{
protected:
/
Powierzchnia Direct3D */
LPDIRECT3DSURFACE9 m_pkD3DSurface;
mrRGBAImage * m_pkRawImage;

public:
/* Konstruktory / Destruktor */
mrSurface (void);
~mrSurface (void);

/* Procedury manipulujące powierchnią */
mrError32 Create (mrRGBAImage * pkRawImage);
mrError32 Update (void);
mrError32 Render (POINT * pkDestPoint, RECT * pkSourceRect = NULL);

/* Procedury obsługowe powierchni */
void SetRawImage (mrRGBAImage * pkRawImage);
mrRGBAImage * GetRawImage (void);

};

/ 'mrTemplateSet.h' /

/* Nagłowek typów bazowych Mirus /
#include "mrDatatypes.h"
/
Nagłówek definicji błędów Mirus /
#include "mrError.h"
/
Nagłówek obrazu RGBA biblioteki Mirus /
#include "mrRGBAImage.h"
/
Nagłowek ekranu Mirus /
#include "mrScreen.h"
/
Nagłówek tekstury Mirus */
#include "mrTexture.h"

/* Załączaj ten plik tylko raz */
#pragma once

/* Klasa prostokątnego obszaru tesktury Mirus */
class mrRectText
{
public:
mrReal32 m_fLeft;
mrReal32 m_fTop;
mrReal32 m_fRight;
mrReal32 m_fBottom;
};

/* Klasa identyfikatora komórki w zestawie szablonów biblioteki Mirus */
class mrCellID
{
public:
mrUInt32 m_iX;
mrUInt32 m_iY;
};

/* Klasa zestawu szablonów Mirus /
class mrTemplateSet
{
protected:
/
Informacja o teksturze */
mrTexture * m_pkTexture;
mrUInt32 m_iTextureWidth;
mrUInt32 m_iTextureHeight;

/* Informacja o komórce */
mrUInt32           m_iCellWidth;
mrUInt32           m_iCellHeight;

public:
/* Konstruktory / Destruktor */
mrTemplateSet (void);
~mrTemplateSet (void);

/* Procedury manipulujące szablonem */
void Create (mrTexture * pkTexture, mrUInt32 iTextureWidth, 
          mrUInt32 iTextureHeight, mrUInt32 iCellWidth, 
          mrUInt32 iCellHeight); 

void GetUV (mrCellID kPosition, mrRectText * pkUVRect);

/* Procedury obsługowe tekstur */
void SetActiveTexture (void);

mrUInt32 GetTextureWidth (void);
mrUInt32 GetTextureHeight (void);
mrUInt32 GetCellWidth (void);
mrUInt32 GetCellHeight (void);

};

  • /* 'mrTexture.h' /*

/* Nagłowek typów bazowych Mirus /
#include "mrDatatypes.h"
/
Nagłówek definicji błędów Mirus /
#include "mrError.h"
/
Nagłówek obrazu RGBA biblioteki Mirus /
#include "mrRGBAImage.h"
/
Nagłówek ekranu Mirus /
#include "mrScreen.h"
/
Plik nagłówka grafiki DirectX */
#include <d3d9.h>

/* Załączaj ten plik tylko raz */
#pragma once

/* Klasa tekstury Mirus /
class mrTexture
{
protected:
/
Powierchnia Direct3D */
LPDIRECT3DTEXTURE9 m_pkD3DTexture;
mrRGBAImage * m_pkRawImage;

mrUInt32           m_iID;
mrBool32           m_iHasAlpha;

/* Składniki obsługowe */
static mrUInt32    m_iActiveTexture;
static mrUInt32    m_iCurrentID;

public:
/* Konstruktory / Destruktor */
mrTexture (void);
~mrTexture (void);

/* Procedury manipulujące teksturami */
mrError32 Create (mrRGBAImage * pkRawImage);
mrError32 Update (void);

void SetRawImage (mrRGBAImage * pkRawImage);
mrRGBAImage * GetRawImage (void);

/* Procedury obsługowe tekstur */
void SetActiveTexture (void);
mrUInt32 GetID (void);

static mrUInt32 GetActiveTexture (void);

};

  • /* 'mrTimer.h' /*

/* Nagłowki typów bazowych Mirus /
#include "mrDatatypes.h"
/
plik nagłówka Windows /
#include <windows.h>
/
Plik nagłowka funkcji czasu */
#include <time.h>

/* Załączaj tylko raz */
#pragma once

/* Klasa mrTimer /
class mrTimer
{
protected:
/
Zmienne zegara sprzętowego */
LARGE_INTEGER m_iFrequency;
LARGE_INTEGER m_iLastQuery;
LARGE_INTEGER m_iDelta;

/* Zmienne czasu i daty */
tm *            m_pkTime;

public:
/* Konstruktor / Destruktor */
mrTimer (void);
~mrTimer (void);

/* Aktualizacja zmiennych czasu */
void Update (void);

/* Zwracają stan zegara */
mrReal32 GetDelta (void);
mrUInt32 GetSeconds (void);
mrUInt32 GetMinutes (void);
mrUInt32 GetHours (void);
mrUInt32 GetDay (void);
mrUInt32 GetMonth (void);
mrUInt32 GetYear (void);

};

*/ 'mrWindows.h' /
**
/
Nagłowki typów bazowych Mirus /
#include "mrDatatypes.h"
/
Plik nagłówka Windows /
#include <windows.h>
#include "mrError.h"
/
Załącz plik tylko raz */
#pragma once

/* Szkielet okna Mirus */
class mrWindow
{
protected:
WNDCLASS m_kWndClass;
HWND m_hWindow;
MSG m_kMessage;

public:
/* Konstruktor / Destruktor */
mrWindow (void);
~mrWindow (void);

/* Funkcje manipulacji oknem */
mrError32 Create (HINSTANCE hInstance, LPSTR szTitle, 
	               mrInt iWidth = CW_USEDEFAULT, 
		           mrInt iHeight = CW_USEDEFAULT, 
			       mrUInt32 iStyle = WS_OVERLAPPEDWINDOW | WS_VISIBLE);
static LRESULT CALLBACK WndProc (HWND hWindow, UINT iMessage, 
                     WPARAM wParam, LPARAM lParam);
void Run (void);

/* Funkcje własne */
virtual mrBool32 MessageHandler (UINT iMessage, WPARAM wParam, 
                              LPARAM lParam);
virtual mrBool32 Frame (void) = 0;

/* Dodatkowe funkcje */
void SetPosition (mrInt iWidth, mrInt iHeight);
POINT GetPosition (void);
void SetSize (mrInt iWidth, mrInt iHeight);
POINT GetSize (void);
void Show (mrInt iShow);

};

0

Pliki .bmp i .txt

0

emacs a co przerosło??

0

Jak komuś się udało wyświetlić uśmieszek, albo wie jak popraiwc ten kod to dajcie znac

0

Czyli nie idzie tego zrobic??

0

Jak dodać plik smile.bmp przez smile.txt w tym kodzie, żeby smile byl widoczny w programie ?

0

Dzięki Informatycy (nie mówię tu o wszystkich zaznaczam), znów sam sobie poradziłem, warto było. Informacje typu, żeby się nauczył jak nakładać teksturę albo,że rozwinąłem się jak dywan , raczej nie pomogły wtedy, więc z takimi radami, to można iść do kolegi z piaskownicy, i nie wchodzić tylko po to żeby ściągnąć kod, bo raczej nic to nie da. I do tych co to zaraz napiszą, że sami mamy się uczyć programować:

  1. Jeżeli ktoś bardzo chce się nauczyć to się nauczy nieważne czy z pomocą innych czy bez niej,
  2. Po co robić takie strony jak ta??
  3. A jeżeli nawet tylko wszedł żeby ściągnąć kod, czy żeby ktoś coś za niego zrobił to też niewiele się mu to da (skoro czujecie się wyżsi bo znacie parę trików jak poprawić kod)
    Dzięki za pomoc głownie chyba tylko Azarian'owi
0

Po co robić takie strony jak ta??

To forum jest darmowe.
Tutaj każdy pomaga z własnej woli; z takimi tekstami to mógłbyś wyjeżdżać, gdyby dostęp był płatny.
I w związku z tym, iż forum jest dla każdego, nikt nie ma obowiązku sprawdzać całego, wielgachnego kodu, który został przez Ciebie podesłany.
Oraz - o ile staramy się pomóc - o tyle nie zawsze jest to możliwe, ani nie każdy zawsze ma chęci analizować czyjś kod w poszukiwaniu błędu.

0

nie wiem co ciebie tak ruszyło w mojej wypowiedzi kierowanej do tych co w sumie tylko potrafią powiedzieć coś głupiego zamiast pomóc?? Nikogo też na siłę nie zmuszam do sprawdzenia kodu ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1