C++ -kysymykset

Muu yhteisön välinen keskustelu.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

Feuer wrote:Juuri sitä muistelen käyttäneeni.
Onko lippujen antojärjestyksellä väliä? =)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim »

MaGetzUb wrote:Mitenkä SDL:ä voi luoda tyhjän RGBA pinnan, joka olisi siis ihan tyhjä (ei mitään väriä) pelkkä läpinäkyvä pinta. Sitten tähän rajapintaan pitäisi saada toisesta alphakanavan omaavasta rajapinnasta palasen, eli tuossa alhaalla olevasta kuvasta yksi frame.
Image
Saan vain mustat reunat noille räjähdyksille, vaikka niiden pitäisi olla läpinäkyviä..
Tällä hetkellä myös rotozoom jotenkin sekoittaa alfakanavan.. Tai sitten sen tekee SDL_DisplayFormat() kuten alla olevasta kuvasta näkyy:
....
Srry, en keksi ratkaisuaa varsinaiseen ongelmaan, mutta voisin antaa vinkejä: tarkista että näyttöpinta 32bit, eli siinäkin on alpha kanava. Kokeile käyttää vain jompaa kumpaa: colorkey tai alpha.
Bugiksi mainitsisin, että koodisi vuotaa kaksi kuvaa bitti bukettiin per Surface::drawf():

Code: Select all

    drws = SDL_CreateRGBSurface(SDL_HWSURFACE, framew, frameh, 32, 0, 0, 0, 0);


    SDL_BlitSurface(srfc, &dframe, drws, &into);
    drws = rotozoomSurface(drws, angle, scale, smooth);     // <--- VUOTAAA KUIN SEULA!!

    drws = SDL_DisplayFormat(drws);     // <--- VUOTAAA KUIN SEULA!!
    if(masking==true){SDL_SetColorKey(drws, SDL_SRCCOLORKEY, SDL_MapRGBA(drws->format, maskr,maskg, maskb, maska));}
Koska rotozoomSurface ja SDL_DisplayFormat molemmat luovat uuden kuvapinnan. ;)
EDIT:

| on binäärinen operaattori or, joka ei välitä pätkääkään miten päin flagit annetaan, koska se summaa tuloksen lopulta yhteen unsigned muuttujaan. :P

-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

JATothrim wrote:
MaGetzUb wrote:Mitenkä SDL:ä voi luoda tyhjän RGBA pinnan, joka olisi siis ihan tyhjä (ei mitään väriä) pelkkä läpinäkyvä pinta. Sitten tähän rajapintaan pitäisi saada toisesta alphakanavan omaavasta rajapinnasta palasen, eli tuossa alhaalla olevasta kuvasta yksi frame.
Image
Saan vain mustat reunat noille räjähdyksille, vaikka niiden pitäisi olla läpinäkyviä..
Tällä hetkellä myös rotozoom jotenkin sekoittaa alfakanavan.. Tai sitten sen tekee SDL_DisplayFormat() kuten alla olevasta kuvasta näkyy:
....
Srry, en keksi ratkaisuaa varsinaiseen ongelmaan, mutta voisin antaa vinkejä: tarkista että näyttöpinta 32bit, eli siinäkin on alpha kanava. Kokeile käyttää vain jompaa kumpaa: colorkey tai alpha.
Bugiksi mainitsisin, että koodisi vuotaa kaksi kuvaa bitti bukettiin per Surface::drawf():

Code: Select all

    drws = SDL_CreateRGBSurface(SDL_HWSURFACE, framew, frameh, 32, 0, 0, 0, 0);


    SDL_BlitSurface(srfc, &dframe, drws, &into);
    drws = rotozoomSurface(drws, angle, scale, smooth);     // <--- VUOTAAA KUIN SEULA!!

    drws = SDL_DisplayFormat(drws);     // <--- VUOTAAA KUIN SEULA!!
    if(masking==true){SDL_SetColorKey(drws, SDL_SRCCOLORKEY, SDL_MapRGBA(drws->format, maskr,maskg, maskb, maska));}
Koska rotozoomSurface ja SDL_DisplayFormat molemmat luovat uuden kuvapinnan. ;)
EDIT:

| on binäärinen operaattori or, joka ei välitä pätkääkään miten päin flagit annetaan, koska se summaa tuloksen lopulta yhteen unsigned muuttujaan. :P

Eipä paljoa auttanut SDL_SRCALPHA:n/SDL_SRCCOLORKEY:n vaihtelu.. :(
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 »

Optimoitko käyttäen SDL_DisplayFormatAlpha-funktiota, että surface pysyy 32-bittisenä?

Jos olet sitä SFML:ää käyttämässä (jos SDL ei mitenkään ala pelittää) niin olen tehnyt sille simppelin apukirjaston animaatioita varten: http://bluefoxgames.org/animated.zip

Tässä yksinkertainen (mutta kommentoimaton) esimerkki käyttämisestä. Kommentteja löytyy enemmän itse kirjaston koodista.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

Noniin, nyt ainakin tuo pelkkä räjähdys kuva näkyy alphan kanssa(kiitos temu92:le tuosta kysymksestä, josta hokasin että tuommoinen funktio on olemassa), mutta frameihin en ole saanut vaikutusta.. =) Noh parempi se on nytkin jo. :) Tuo SFML on kyl mielenkiintoinen, mutta pysyttelen SDL:ä ihan vain mieltymyksestä.. Katson seuraavaa projektia tuon SFML:n kanssa. :P
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

Opettelen tässä c++ Windows-ohjelmointia ja lainasin vanhan kirjan win-98-ajoilta, jolloin säieprosessointi ja moniajaminen oli vielä lapsenkengissään. Siinähän se ongelma piileekin, että koko oppaan tutot ovan liian vanhoja nykyisten kääntäjien ajettavaksi. Joten, kertokaapa, mitä tässä koodissa pitäisi muuttaa, että sitä nykykääntäjät pystyvät ajamaan?

Code: Select all

// DEMO6_2.CPP basic full-screen DirectDraw demo

// INCLUDES ///////////////////////////////////////////////

#define WIN32_LEAN_AND_MEAN  // just say no to MFC

#include <windows.h>   // include important windows stuff
#include <windowsx.h> 
#include <mmsystem.h>
#include <iostream.h> // include important C/C++ stuff
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h> 
#include <math.h>
#include <io.h>
#include <fcntl.h>

#include <ddraw.h> // include directdraw

// DEFINES ////////////////////////////////////////////////

// defines for windows 
#define WINDOW_CLASS_NAME "WINCLASS1"

// default screen size
#define SCREEN_WIDTH    640  // size of screen
#define SCREEN_HEIGHT   480
#define SCREEN_BPP      8    // bits per pixel
#define MAX_COLORS      256  // maximum colors

// TYPES //////////////////////////////////////////////////////

// basic unsigned types
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef unsigned char  UCHAR;
typedef unsigned char  BYTE;

// MACROS /////////////////////////////////////////////////

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)

// initializes a direct draw struct
#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }

// GLOBALS ////////////////////////////////////////////////
HWND      main_window_handle = NULL; // globally track main window
HINSTANCE hinstance_app      = NULL; // globally track hinstance

// directdraw stuff

LPDIRECTDRAW          lpdd         = NULL;   // dd object
LPDIRECTDRAW4         lpdd4        = NULL;   // dd4 object
LPDIRECTDRAWSURFACE4  lpddsprimary = NULL;   // dd primary surface
LPDIRECTDRAWSURFACE4  lpddsback    = NULL;   // dd back surface
LPDIRECTDRAWPALETTE   lpddpal      = NULL;   // a pointer to the created dd palette
LPDIRECTDRAWCLIPPER   lpddclipper  = NULL;   // dd clipper
PALETTEENTRY          palette[256];          // color palette
PALETTEENTRY          save_palette[256];     // used to save palettes
DDSURFACEDESC2        ddsd;                  // a direct draw surface description struct
DDBLTFX               ddbltfx;               // used to fill
DDSCAPS2              ddscaps;               // a direct draw surface capabilities struct
HRESULT               ddrval;                // result back from dd calls
DWORD                 start_clock_count = 0; // used for timing

// these defined the general clipping rectangle
int min_clip_x = 0,                          // clipping rectangle 
    max_clip_x = SCREEN_WIDTH-1,
    min_clip_y = 0,
    max_clip_y = SCREEN_HEIGHT-1;

// these are overwritten globally by DD_Init()
int screen_width  = SCREEN_WIDTH,            // width of screen
    screen_height = SCREEN_HEIGHT,           // height of screen
    screen_bpp    = SCREEN_BPP;              // bits per pixel


char buffer[80];                     // general printing buffer

// FUNCTIONS //////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hwnd, 
						    UINT msg, 
                            WPARAM wparam, 
                            LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT		ps;		// used in WM_PAINT
HDC				hdc;	// handle to a device context
char buffer[80];        // used to print strings

// what is the message 
switch(msg)
	{	
	case WM_CREATE: 
        {
		// do initialization stuff here
        // return success
		return(0);
		} break;
   
	case WM_PAINT: 
		{
		// simply validate the window 
   	    hdc = BeginPaint(hwnd,&ps);	 
        
        // end painting
        EndPaint(hwnd,&ps);

        // return success
		return(0);
   		} break;

	case WM_DESTROY: 
		{

		// kill the application, this sends a WM_QUIT message 
		PostQuitMessage(0);

        // return success
		return(0);
		} break;

	default:break;

    } // end switch

// process any messages that we didn't take care of 
return (DefWindowProc(hwnd, msg, wparam, lparam));

} // end WinProc

///////////////////////////////////////////////////////////

int Game_Main(void *parms = NULL, int num_parms = 0)
{
// this is the main loop of the game, do all your processing
// here

// for now test if user is hitting ESC and send WM_CLOSE
if (KEYDOWN(VK_ESCAPE))
   SendMessage(main_window_handle,WM_CLOSE,0,0);

// return success or failure or your own return code here
return(1);

} // end Game_Main

////////////////////////////////////////////////////////////

int Game_Init(void *parms = NULL, int num_parms = 0)
{
// this is called once after the initial window is created and
// before the main event loop is entered, do all your initialization
// here

// first create base IDirectDraw interface
if (FAILED(DirectDrawCreate(NULL, &lpdd, NULL)))
   {
   // error
   return(0);
   } // end if

// now query for IDirectDraw4
if (FAILED(lpdd->QueryInterface(IID_IDirectDraw4,
                               (LPVOID *)&lpdd4)))
   {
   // error
   return(0);
   } // end if

// set cooperation to full screen
if (FAILED(lpdd4->SetCooperativeLevel(main_window_handle, 
                                      DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX | 
                                      DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
   {
   // error
   return(0);
   } // end if

// set display mode to 640x480x8
if (FAILED(lpdd4->SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP,0,0)))
   {
   // error
   return(0);
   } // end if


// return success or failure or your own return code here
return(1);

} // end Game_Init

/////////////////////////////////////////////////////////////

int Game_Shutdown(void *parms = NULL, int num_parms = 0)
{
// this is called after the game is exited and the main event
// loop while is exited, do all you cleanup and shutdown here

// simply blow away the IDirectDraw4 interface
if (lpdd4)
   {
   lpdd4->Release();
   lpdd4 = NULL;
   } // end if

// return success or failure or your own return code here
return(1);

} // end Game_Shutdown

// WINMAIN ////////////////////////////////////////////////
int WINAPI WinMain(	HINSTANCE hinstance,
					HINSTANCE hprevinstance,
					LPSTR lpcmdline,
					int ncmdshow)
{

WNDCLASSEX winclass; // this will hold the class we create
HWND	   hwnd;	 // generic window handle
MSG		   msg;		 // generic message
HDC        hdc;      // graphics device context

// first fill in the window class stucture
winclass.cbSize         = sizeof(WNDCLASSEX);
winclass.style			= CS_DBLCLKS | CS_OWNDC | 
                          CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc	= WindowProc;
winclass.cbClsExtra		= 0;
winclass.cbWndExtra		= 0;
winclass.hInstance		= hinstance;
winclass.hIcon			= LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor		= LoadCursor(NULL, IDC_ARROW); 
winclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName	= NULL;
winclass.lpszClassName	= WINDOW_CLASS_NAME;
winclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

// save hinstance in global
hinstance_app = hinstance;

// register the window class
if (!RegisterClassEx(&winclass))
	return(0);

// create the window
if (!(hwnd = CreateWindowEx(NULL,                  // extended style
                            WINDOW_CLASS_NAME,     // class
						    "DirectDraw Full-Screen Demo", // title
						    WS_POPUP | WS_VISIBLE,
					 	    0,0,	  // initial x,y
						    SCREEN_WIDTH,SCREEN_HEIGHT,  // initial width, height
						    NULL,	  // handle to parent 
						    NULL,	  // handle to menu
						    hinstance,// instance of this application
						    NULL)))	// extra creation parms
return(0);

// save main window handle
main_window_handle = hwnd;

// initialize game here
Game_Init();

// enter main event loop
while(TRUE)
	{
    // test if there is a message in queue, if so get it
	if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
	   { 
	   // test if this is a quit
       if (msg.message == WM_QUIT)
           break;
	
	   // translate any accelerator keys
	   TranslateMessage(&msg);

	   // send the message to the window proc
	   DispatchMessage(&msg);
	   } // end if
    
       // main game processing goes here
       Game_Main();
       
	} // end while

// closedown game here
Game_Shutdown();

// return to Windows like this
return(msg.wParam);

} // end WinMain

///////////////////////////////////////////////////////////
Ja sitten vielä se virheilmoitus:

Code: Select all

32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated. 
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 »

Jos ihan lukisit sen virheilmoituksen. Siinä sanotaan että käytät vanhentuneita otsikkotiedostoja jotka ei selvästikään enää pelitä. Lisäksi jos linkkeriin tarvitsee jotain pistää niin varmista, että sieltä löytyy tarvittavat jutut. Jos aiot opetella C++:aa niin älä nyt kaiva esiin jotain 13 vuotta vanhoja koodinpätkiä vaan etsi netistä mieluummin uutta sisältöä joka toimii ilman mittavia muutoksia.

Jos threadeja haluat opetella niin mainostamani SFML tukee niitäkin.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer »

Putkan C++ - opas ja Hassunhauskakin ovat ihan hyviä oppaita, kunhan jälkimmäisessä muistaa säätää nimiavaruudet kartalle. Dev-C++ - IDEn vaihtaisin itse suoraan Visual C++ ([Express])ksi tai joksikin avokoodin IDEksi, joista joku näitä tunteva osannee nimetä kivan.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 »

Itse olen enemmän käytellyt Code::Blocksia aiemmin, mutta siirryin sittemmin NetBeansiin, koska sitä käytän myös nettisivujen koodaamiseen. On jälkimmäinen kyllä huomattavasti kehittyneempi, mutta kääntäjän asentaminen vaatii vähän enemmän vaivaa kuin C::B:n kanssa. Dev-Cpp on vaan jo niin ikiwanha, hylätty ja buginen, ettei sitä kannata käyttää.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

Olen opettelemssa DirectX:n ihmeellistä maailmaa. Miksi kääntäjä heittää outoa virhettä jä jäädyttää koneen kun laitan SCREEN_WIDTH:in ja SCREEN_HEIGHT:in muuksi kuin 800:600 (esim. 1600:1200 tai 1920:1200)? Koneeni näyttö on 16:9 HD-näyttö, joten kyllä noita muotoja sen pitäisi tukea.

Code: Select all

// include the basic windows header files and the Direct3D header file
#include <stdAfx.h>
#include <windows.h>
#include <windowsx.h>
#include <d3d9.h>

// definitions
#define SCREEN_WIDTH  800
#define SCREEN_HEIGHT 600

// include the Direct3D Library file
#pragma comment (lib, "d3d9.lib")

// global declarations
LPDIRECT3D9 d3d;    // the pointer to our Direct3D interface
LPDIRECT3DDEVICE9 d3ddev;    // the pointer to the device class

// function prototypes
void initD3D(HWND hWnd);    // sets up and initializes Direct3D
void render_frame(void);    // renders a single frame
void cleanD3D(void);    // closes Direct3D and releases memory

// the WindowProc function prototype
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);


// the entry point for any Windows program
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    HWND hWnd;
    WNDCLASSEX wc;

    ZeroMemory(&wc, sizeof(WNDCLASSEX));

    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  //wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wc.lpszClassName = L"WindowClass";

    RegisterClassEx(&wc);

    hWnd = CreateWindowEx(NULL,
                          L"WindowClass",
                          L"Our First Direct3D Program",
                          WS_EX_TOPMOST | WS_POPUP,
                          0, 0,
                          SCREEN_WIDTH, SCREEN_HEIGHT,
                          NULL,
                          NULL,
                          hInstance,
                          NULL);

    ShowWindow(hWnd, nCmdShow);

    // set up and initialize Direct3D
    initD3D(hWnd);

    // enter the main loop:

    MSG msg;

    while(TRUE)
    {
        while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

        if(msg.message == WM_QUIT)
            break;

        render_frame();
    }

    // clean up DirectX and COM
    cleanD3D();

    return msg.wParam;
}


// this is the main message handler for the program
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_DESTROY:
            {
                PostQuitMessage(0);
                return 0;
            } break;
    }

    return DefWindowProc (hWnd, message, wParam, lParam);
}


// this function initializes and prepares Direct3D for use
void initD3D(HWND hWnd)
{
    d3d = Direct3DCreate9(D3D_SDK_VERSION);    // create the Direct3D interface

    D3DPRESENT_PARAMETERS d3dpp;    // luo rakennne erilaisia laitetietoja varten

    ZeroMemory(&d3dpp, sizeof(d3dpp));           // tyhjennä rakenne käyttöä varten
    d3dpp.Windowed = FALSE;                      // ohjelma koko ruudulle
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    // tuhoa vanhat ruudut
    d3dpp.hDeviceWindow = hWnd;                  // aseta d3d:n käyttämä ikkuna
        d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;    // áseta takapuskurin formaatti 32-bittiseksi
	d3dpp.BackBufferWidth = SCREEN_WIDTH;         // aseta takapuskurin leveys
	d3dpp.BackBufferHeight = SCREEN_HEIGHT;       // aseta takapuskurin korkeus


    // create a device class using this information and the info from the d3dpp stuct
    d3d->CreateDevice(D3DADAPTER_DEFAULT,
                      D3DDEVTYPE_HAL,
                      hWnd,
                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                      &d3dpp,
                      &d3ddev);
}


// this is the function used to render a single frame
void render_frame(void)
{
    // clear the window to a deep blue
    d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 40, 100), 1.0f, 0);

    d3ddev->BeginScene();    // begins the 3D scene

    // do 3D rendering on the back buffer here

    d3ddev->EndScene();    // ends the 3D scene

    d3ddev->Present(NULL, NULL, NULL, NULL);   // displays the created frame on the screen
}


// this is the function that cleans up Direct3D and COM
void cleanD3D(void)
{
    d3ddev->Release();    // close and release the 3D device
    d3d->Release();    // close and release Direct3D
}
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

naputtelija wrote:Olen opettelemssa DirectX:n ihmeellistä maailmaa. Miksi kääntäjä heittää outoa virhettä jä jäädyttää koneen kun laitan SCREEN_WIDTH:in ja SCREEN_HEIGHT:in muuksi kuin 800:600 (esim. 1600:1200 tai 1920:1200)? Koneeni näyttö on 16:9 HD-näyttö, joten kyllä noita muotoja sen pitäisi tukea.
ei se siitä ole kiinni jos kääntäjä herjaa

virheet plox
Marsuilija

Re: C++ -kysymykset

Post by Marsuilija »

Näin nopeana kysymyksenä, onko C++:ssa oletuksena mitään käyttöjärjestelmäriippumatonta vastinetta tai vastaavaa toimintoa CB:n Timer()-funktiolle? Ja tarvitseeko vastaavaan toiminnallisuuteen jotakin lisäkirjastoa?

Kiitos.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer »

SDL:ssä on SDL_GetTicks(), ja SFMLkin kai omaa vastaavan funktion.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 »

SFML:ssä aikaa käsitellään erillisen Clock-luokan kautta. Peli on myös todella helppo saada fps-riippumattomaksi pääluokan (tms) funktiolla GetFrameTime().

Lisää löydät täältä: http://www.sfml-dev.org/tutorials/1.6/window-time.php
Marsuilija

Re: C++ -kysymykset

Post by Marsuilija »

Juuh, kiitoksia. Noilla eväillä pääsenkin eteenpäin.
Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 5:43 pm

Re: C++ -kysymykset

Post by Dimple »

Standardikirjastossa on myös funktioita, joilla voi käsitellä aikaa. Googlaa "ctime".
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer »

Yksinkertainen, toimiva zippikirjasto (15 funktiokutsua ja 3 luuppia zipin purkamiseksi tiettyyn kansioon ei ole yksinkertainen), jolla saa... Noh, purettua zipin sisällöt tiettyyn kansioon. Onko sellaista?
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: C++ -kysymykset

Post by KilledWhale »

http://www.winimage.com/zLibDll/minizip.html ainakin pitäisi olla helppo. En ole kokeillut itse, joten mene ja tiedä.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer »

Kiitän :P
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Post Reply