Результаты поиска
| |
bond95 | Дата: Воскресенье, 20 Ноября 2011, 15:21 | Сообщение # 1 | Тема: Не отображается юнит |
частый гость
Сейчас нет на сайте
| Решил в целях обучения сделать простенькую стратегия но сразу же потерпел неудачу, юнит которого я хочу вывести почему-то не отображается хоть все вроде бы работает исправно, даже карту выводит. Вот исходник: Code #include <math.h> #pragma warning( default : 4996 ) #include "main.h" Player *pl; //----------------------------------------------------------------------------- // Global variables //----------------------------------------------------------------------------- LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; // Buffer to hold vertices LPDIRECT3DINDEXBUFFER9 vBi=NULL; LPDIRECT3DTEXTURE9 texture[5]; int *map=NULL; // A structure for our custom vertex type VOID D3DUtil_InitMaterial( D3DMATERIAL9& mtrl, FLOAT r, FLOAT g, FLOAT b, FLOAT a ); //----------------------------------------------------------------------------- // Name: InitD3D() // Desc: Initializes Direct3D //----------------------------------------------------------------------------- HRESULT InitD3D( HWND hWnd ) { // Create the D3D object. if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; // Set up the structure used to create the D3DDevice D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( &d3dpp, sizeof( d3dpp ) ); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.BackBufferHeight=480; d3dpp.BackBufferWidth=480; // Create the D3DDevice if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice ) ) ) { return E_FAIL; } // Turn off culling, so we see the front and back of the triangle g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); // Turn off D3D lighting, since we are providing our own vertex colors g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE ); g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE); return S_OK; } //----------------------------------------------------------------------------- // Name: InitGeometry() // Desc: Creates the scene geometry //----------------------------------------------------------------------------- HRESULT InitGeometry() { // Initialize three vertices for rendering a triangle unsigned short index[]={ 0,1,2,2,1,3 }; // Create the vertex buffer. if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4 * sizeof( CUSTOMVERTEX ), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL ) ) ) { return E_FAIL; } // Fill the vertex buffer. CUSTOMVERTEX* pVertices; if( FAILED( g_pVB->Lock( 0, sizeof( CUSTOMVERTEX)*4, ( void** )&pVertices, 0 ) ) ) return E_FAIL; for(int i = 0; i < 4; i++) pVertices[i].color = 0xffffffff; pVertices[0].position = D3DXVECTOR3( 0.0f, 0.0f, 0.0f ); pVertices[0].tu = 0.0f; pVertices[0].tv = 1.0f; pVertices[1].position = D3DXVECTOR3( 0.0f, 1.0f, 0.0f ); pVertices[1].tu = 0.0f; pVertices[1].tv = 0.0f; pVertices[2].position = D3DXVECTOR3( 1.0f, 0.0f, 0.0f ); pVertices[2].tu = 1.0f; pVertices[2].tv = 1.0f; pVertices[3].position = D3DXVECTOR3( 1.0f, 1.0f, 0.0f ); pVertices[3].tu = 1.0f; pVertices[3].tv = 0.0f; g_pVB->Unlock(); VOID* indeces; if( FAILED( g_pd3dDevice->CreateIndexBuffer(6 * sizeof(short ), 0, D3DFMT_INDEX16, D3DPOOL_DEFAULT, &vBi, NULL ) ) ) { return E_FAIL; } if( FAILED( vBi->Lock( 0, sizeof( index ), ( void** )&indeces, 0 ) ) ) return E_FAIL; memcpy( indeces, index, sizeof( index ) ); vBi->Unlock(); map=new int[100]; for(int i=0; i<50; i++) map[i]=0; for(int i=50; i<60; i++) map[i]=1; for(int i=60; i<100; i++) map[i]=2; // Seed the randomized srand( timeGetTime() ); for(int i = 0; i < 50; i++ ) { // Place rock tile if random 0-10 = 5 if( rand()%10 == 5 ) map[ i ] = 3; } // Seed the randomized srand( timeGetTime() ); for(int i = 60; i < 100; i++ ) { // Place rock tile if random 0-10 = 5 if( rand()%10 == 5 ) map[ i ] = 4; } for(int i = 90; i < 100; i++ ) { // Place rock tile if random 0-10 = 5 map[ i ] = 5; } if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, TEXT("grass00.bmp"), &texture[0] ) ) ) { MessageBox( NULL, TEXT("Не удается загрузитьтекстуру"), TEXT("Текстура"), MB_OK ); return E_FAIL; } if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, TEXT("grass_edging_bottom.bmp"), &texture[1] ) ) ) { MessageBox( NULL, TEXT("Не удается загрузить BG.bmp"), TEXT("Урок 4 - Наложение текстур, фильтрация"), MB_OK ); return E_FAIL; } if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, TEXT("beach.bmp"), &texture[2] ) ) ) { MessageBox( NULL, TEXT("Не удается загрузитьтекстуру"), TEXT("Текстура"), MB_OK ); return E_FAIL; } if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, TEXT("grass_rocks.bmp"), &texture[3] ) ) ) { MessageBox( NULL, TEXT("Не удается загрузитьтекстуру"), TEXT("Текстура"), MB_OK ); return E_FAIL; } if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, TEXT("grass_splotch.bmp"), &texture[4] ) ) ) { MessageBox( NULL, TEXT("Не удается загрузитьтекстуру"), TEXT("Текстура"), MB_OK ); return E_FAIL; } if(FAILED(pl=new Player())) return E_FAIL; return S_OK; } //----------------------------------------------------------------------------- // Name: Cleanup() // Desc: Releases all previously initialized objects //----------------------------------------------------------------------------- VOID Cleanup() { if( g_pVB != NULL ) g_pVB->Release(); if( vBi != NULL ) vBi->Release(); if( g_pd3dDevice != NULL ) g_pd3dDevice->Release(); if( g_pD3D != NULL ) g_pD3D->Release(); } //----------------------------------------------------------------------------- // Name: SetupMatrices() // Desc: Sets up the world, view, and projection transform matrices. //----------------------------------------------------------------------------- VOID SetupMatrices() { D3DXMATRIX matproj,matview; // Set up the textures g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE ); g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR ); g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR ); // Set miscellaneous render states g_pd3dDevice->SetRenderState( D3DRS_DITHERENABLE, FALSE ); g_pd3dDevice->SetRenderState( D3DRS_SPECULARENABLE, FALSE ); g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE ); g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0x00888888 ); // Setup the 3D View D3DXMatrixIdentity(&matview); g_pd3dDevice->SetTransform(D3DTS_VIEW, &matview); D3DXMatrixOrthoLH(&matproj, (float)480, (float)480, -1, 2); g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matproj); g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); g_pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE); g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, FALSE); g_pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE); // Setup a material D3DMATERIAL9 mtrl; D3DUtil_InitMaterial( mtrl, 1.0f, 1.0f, 1.0f, 1.0f ); g_pd3dDevice->SetMaterial( &mtrl ); } //----------------------------------------------------------------------------- // Name: Render() // Desc: Draws the scene //----------------------------------------------------------------------------- VOID Render() { // Clear the backbuffer to a black color g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 0, 0, 255 ), 1.0f, 0 ); // Begin the scene if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) { SetupMatrices(); for(int iY = 0; iY <10; iY++ ) { // Horizontal for(int iX = 0; iX < 10; iX++ ) { // Setup the world, view, and projection matrices D3DXMATRIX matWorld; D3DXMATRIX matRotation; D3DXMATRIX matTranslation; D3DXMATRIX matScale; // Set default position,scale,rotation D3DXMatrixIdentity( &matTranslation ); // Scale the tile D3DXMatrixScaling( &matScale, 48.0f, 48.0f, 1.0f ); D3DXMatrixMultiply( &matTranslation, &matTranslation, &matScale ); // Rotate the tile if(map[10*iY+iX]==5) { g_pd3dDevice->SetTexture(0,texture[1]); D3DXMatrixRotationZ( &matRotation, (3.14f)); } else { g_pd3dDevice->SetTexture(0,texture[map[10*iY+iX]]); D3DXMatrixRotationZ( &matRotation, 0.0f ); } D3DXMatrixMultiply( &matWorld, &matTranslation, &matRotation ); // Move the tile matWorld._41 = -240.0f+(iX*48.0f)-0.5f; // X-Pos matWorld._42 = 192.0f-(iY*48.0f)+0.5f; // Y-Pos if(map[10*iY+iX]==5) { matWorld._42+=48.0f; matWorld._41+=48.0f; } // Set matrix g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); // Render the vertex buffer contents g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) ); g_pd3dDevice->SetIndices(vBi); g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2); g_pd3dDevice->SetTexture( 0, NULL); pl->ShowPlayer(); } } // End the scene g_pd3dDevice->EndScene(); } // Present the backbuffer contents to the display g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); } //----------------------------------------------------------------------------- // Name: MsgProc() // Desc: The window's message handler //----------------------------------------------------------------------------- LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_DESTROY: Cleanup(); PostQuitMessage( 0 ); return 0; case WM_CHAR: Cleanup(); PostQuitMessage (0); return 0; } return DefWindowProc( hWnd, msg, wParam, lParam ); } //----------------------------------------------------------------------------- // Name: WinMain() // Desc: The application's entry point //----------------------------------------------------------------------------- INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT ) { UNREFERENCED_PARAMETER( hInst ); // Register the window class WNDCLASSEX wc = { sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle( NULL ), NULL, NULL, NULL, NULL, L"D3D Tutorial", NULL }; RegisterClassEx( &wc ); // Create the application's window HWND hWnd = CreateWindow( L"D3D Tutorial", L"D3D Tutorial 03: Matrices", WS_OVERLAPPEDWINDOW, 100, 100, 480, 480, NULL, NULL, wc.hInstance, NULL ); // Initialize Direct3D if( SUCCEEDED( InitD3D( hWnd ) ) ) { // Create the scene geometry if( SUCCEEDED( InitGeometry() ) ) { // Show the window ShowWindow( hWnd, SW_SHOWDEFAULT ); UpdateWindow( hWnd ); // Enter the message loop MSG msg; ZeroMemory( &msg, sizeof( msg ) ); while( msg.message != WM_QUIT ) { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else Render(); } } } UnregisterClass( L"D3D Tutorial", wc.hInstance ); return 0; } VOID D3DUtil_InitMaterial( D3DMATERIAL9& mtrl, FLOAT r, FLOAT g, FLOAT b, FLOAT a ) { ZeroMemory( &mtrl, sizeof(D3DMATERIAL9) ); mtrl.Diffuse.r = mtrl.Ambient.r = r; mtrl.Diffuse.g = mtrl.Ambient.g = g; mtrl.Diffuse.b = mtrl.Ambient.b = b; mtrl.Diffuse.a = mtrl.Ambient.a = a; } Player::Player() { if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, TEXT("warior.bmp"), &ptexture ) ) ) { MessageBox( NULL, TEXT("Не удается загрузитьтекстуру"), TEXT("Текстура"), MB_OK ); } px=endx=300.0f; py=endy=300.0f; } void Player::ShowPlayer() { D3DXMATRIX matWorld; D3DXMATRIX matScale; D3DXMATRIX matTranslation; D3DXMATRIX matRotation; D3DXMatrixIdentity(&matTranslation); D3DXMatrixTranslation( &matTranslation, px-0.5f, py-0.5f, 0.0f ); // Set default position,scale,rotation // Rotate the tile D3DXMatrixScaling(&matWorld,48.0f,24.0f,1.0f); D3DXMatrixMultiply(&matTranslation,&matTranslation,&matScale); D3DXMatrixRotationZ( &matRotation, 0); D3DXMatrixMultiply( &matWorld, &matTranslation, &matRotation ); g_pd3dDevice->SetTexture(0,ptexture); g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); // Render the vertex buffer contents g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) ); g_pd3dDevice->SetIndices(vBi); g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2); g_pd3dDevice->SetTexture( 0, NULL); } Добавлено (20.11.2011, 15:21) --------------------------------------------- main.h Code #include <d3dx9.h> struct CUSTOMVERTEX { D3DXVECTOR3 position; // The untransformed, 3D position for the vertex DWORD color; // The vertex color FLOAT tu,tv; }; // Our custom FVF, which describes our custom vertex structure #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1) class Player { private: LPDIRECT3DTEXTURE9 ptexture[2]; LPDIRECT3DVERTEXBUFFER9 points; LPDIRECT3DINDEXBUFFER9 pindex; float px; float py; float endx; float endy; CUSTOMVERTEX pvertex[4]; public: Player(); void ShowPlayer(); void SetPosition(int tx, int ty) { } };
|
|
| |
bond95 | Дата: Воскресенье, 13 Ноября 2011, 16:39 | Сообщение # 2 | Тема: Отображение 2D карты |
частый гость
Сейчас нет на сайте
| Читаю книгу "Программирование стратегических игр с DirectX 9" поскольку в версии DirectX 2010 года нету некоторых заголовочных файлов которые нужны для примера я переделал пример уже без тех файлов. Пример компилируется нормально, но почему то ничего не выводит. В чем может быть проблема? Исходники
|
|
| |
bond95 | Дата: Понедельник, 27 Декабря 2010, 16:53 | Сообщение # 3 | Тема: Бесконечный массив |
частый гость
Сейчас нет на сайте
| спс
|
|
| |
bond95 | Дата: Воскресенье, 26 Декабря 2010, 20:09 | Сообщение # 4 | Тема: Бесконечный массив |
частый гость
Сейчас нет на сайте
| С++ builder Добавлено (26.12.2010, 20:09) --------------------------------------------- А как удалить файл с этого архива?
|
|
| |
bond95 | Дата: Воскресенье, 26 Декабря 2010, 17:08 | Сообщение # 5 | Тема: Бесконечный массив |
частый гость
Сейчас нет на сайте
| Выдает ошибку в этой строке. Quote (Archido) strcpy_s(FileName, strlen(FilePath) + 1, FilePath); //копирует строки
|
|
| |
bond95 | Дата: Воскресенье, 26 Декабря 2010, 16:30 | Сообщение # 6 | Тема: Бесконечный массив |
частый гость
Сейчас нет на сайте
| Мне нужно перед тем как вставить один файл в другой проверить вставленный ли этот файл или нет.
|
|
| |
bond95 | Дата: Воскресенье, 26 Декабря 2010, 14:31 | Сообщение # 7 | Тема: Бесконечный массив |
частый гость
Сейчас нет на сайте
| Сделал пробную программу объединения файлов: Code //---------------------------------------------------------------------------
#pragma hdrstop #include <stdio.h> #include <iostream> #include <fstream.h> #include <conio.h>
//---------------------------------------------------------------------------
#pragma argsused int main(int argc, char* argv[]) { setlocale( LC_ALL,"Russian" ); FILE *f; FILE *f2; FILE *f3; int scl; char *name; char *flag; char *name2; bool tof=true; name2="text.txt"; f=fopen("text.txt","rb"); f2=fopen("test2.txt","ab+"); if((f3=fopen("test2.txt","r"))==NULL) { return 0; } while ( fgets(name,25,f3)!=NULL && strcmp(name,"text.txt")) { //считывание файла до тех пор пока он не закончится if(!strcmp(name,"text.txt")) { std::cout<<"Такой файл уже существует, изменить имя? y/n"; std::cin>>flag; if(strcmp(flag,"y")==0) { std::cin>>name2; tof=true; } else tof=false; } name=NULL; } if(tof) { fputs("\n",f2); fputs(name2,f2); fputs("\n",f2); while((scl=fgetc(f))!=EOF) { fputc(scl,f2); scl=NULL; } } fclose(f); fclose(f2); return 0; } //--------------------------------------------------------------------------- Когда запускаю программу она до цикла работает нормально но когда начинается цикл он почему то стает бесконечным. Помогите найти ошибку.
Сообщение отредактировал bond95 - Воскресенье, 26 Декабря 2010, 14:31 |
|
| |
bond95 | Дата: Воскресенье, 26 Декабря 2010, 01:36 | Сообщение # 8 | Тема: Объединить несколько фалов в один файл. |
частый гость
Сейчас нет на сайте
| ладно, можете уже закрывать тему, я разобрался.
|
|
| |
bond95 | Дата: Суббота, 25 Декабря 2010, 22:30 | Сообщение # 9 | Тема: Объединить несколько фалов в один файл. |
частый гость
Сейчас нет на сайте
| А разшить как?
|
|
| |
bond95 | Дата: Суббота, 25 Декабря 2010, 22:09 | Сообщение # 10 | Тема: Объединить несколько фалов в один файл. |
частый гость
Сейчас нет на сайте
| Я тоже хотел что то типа это только информацию о файлах записывать в другой файл, но так даже удобней
|
|
| |
bond95 | Дата: Суббота, 25 Декабря 2010, 13:49 | Сообщение # 11 | Тема: Объединить несколько фалов в один файл. |
частый гость
Сейчас нет на сайте
| Доброго времени суток. Вот вопрос, как объединить несколько файлов, а потом при потребности добавить в тот файл еще несколько файлов. Очень похоже на архиватор, только файлы сжимать не надо.
Сообщение отредактировал bond95 - Суббота, 25 Декабря 2010, 14:43 |
|
| |
bond95 | Дата: Пятница, 05 Ноября 2010, 23:10 | Сообщение # 12 | Тема: Создание 2d движка |
частый гость
Сейчас нет на сайте
| Последний вопрос, как использовать компилятор борланд с++? Я питался по документации с интернета скомпилировать программу "привет мир", он выдает ошибку "Fatal: Expected a file name: ". Добавлено (05.11.2010, 23:10) --------------------------------------------- Все разобрался, спс.
|
|
| |
bond95 | Дата: Пятница, 05 Ноября 2010, 22:05 | Сообщение # 13 | Тема: Создание 2d движка |
частый гость
Сейчас нет на сайте
| Matou, мне нужно только 2d.
|
|
| |
bond95 | Дата: Пятница, 05 Ноября 2010, 21:43 | Сообщение # 14 | Тема: Создание 2d движка |
частый гость
Сейчас нет на сайте
| VCL билдера можно использовать в качестве ГАПИ?
|
|
| |
bond95 | Дата: Пятница, 05 Ноября 2010, 21:25 | Сообщение # 15 | Тема: Создание 2d движка |
частый гость
Сейчас нет на сайте
| ezhickovich, я пробовал учить и DirectX и OpenGL, но постоянно когда я пытаюсь скомпилировать примеры компилятор мне выдает ошибку.
|
|
| |
bond95 | Дата: Среда, 03 Ноября 2010, 21:01 | Сообщение # 16 | Тема: Создание 2d движка |
частый гость
Сейчас нет на сайте
| ezhickovich, я C++ и ООП знаю достаточно хорошо.
|
|
| |
bond95 | Дата: Среда, 03 Ноября 2010, 20:50 | Сообщение # 17 | Тема: Создание 2d движка |
частый гость
Сейчас нет на сайте
| В образовательных целях решил написать 2д движок. Но с чего начать не знаю. Дайте пожалуйста ссылки на примеры или исходники движков.
|
|
| |
bond95 | Дата: Воскресенье, 31 Октября 2010, 21:46 | Сообщение # 18 | Тема: [2D] Паразит 2 |
частый гость
Сейчас нет на сайте
| спс
|
|
| |
bond95 | Дата: Воскресенье, 31 Октября 2010, 17:38 | Сообщение # 19 | Тема: [2D] Паразит 2 |
частый гость
Сейчас нет на сайте
| Спс
|
|
| |
bond95 | Дата: Воскресенье, 31 Октября 2010, 15:00 | Сообщение # 20 | Тема: [2D] Паразит 2 |
частый гость
Сейчас нет на сайте
| Спс. В третей части я постараюсь сделать уровни по сложнее.
|
|
| |
|