The Steve

  • Content count

  • Joined

  • Last visited

Community Reputation

143 Neutral

About The Steve

  • Rank
  1. More often than once I've found myself saying "Ok, how does this work again?" when I want to make a DirectX project. Simplified versions of the pipeline, like the one given by Nvidia, are easily available. But has anyone ever made a "How a scene is rendered completely" flowchart that starts with win32 windows initialization, deals with vertex and index buffers, pixel and vertex shaders, etc? I think something like that would be really useful.
  2. I'd like to catch up on some of the latest graphics technologies, specifically some of the neat tricks that have come out in the past 4-5 years. But I've been caught up on which would be the best to learn, as it looks like there is a lot of varied platform independent stuff and a LOT of new advances. I have a decent, which is to say not very decent, understanding of beginner DirectX and OpenGL features. I'd like to dive into something more technical and cool. Advice welcome! [img][/img]
  3. [quote name='french_hustler' timestamp='1344287430' post='4966814'] Simplest way? Yes, a model. Basically a bunch of sub-divided planes (representing each country) with some sort of height-map for elevation. If each sub-divided plane has its own material, you could change it at will during run-time. [/quote] Awesome. Thanks for the input!
  4. Here's a screenshot from Paradox's "Europa Universalis III." It's a strategy game in the vein of the Total War genre, with an emphasis on a real time aspect of the strategy. What I'm wondering is how a map like that is rendered in directx/opengl. Do you imagine it's a model? An image with 3D faked? How do you think you could highlight the countries?
  5. I'm writing some basic primitive functions and making some index buffers. I've been using pencil and paper to see it for the moment, but that's getting old and tedious. Does anyone know a cool utility I can use to plot multiple points simply? I'm just looking for a simple 3d plotter.
  6. I'm refactoring some of my directx10 code to directx11 and trying to figure out DIrectWrite for my text functions. From MSDN, I hear that they're switching everything to this and that directwrite is now included with direct3d. But, eh - I can't find a tutorial that actually shows 3d Rendered text with directwrite. Anyone know an example?
  7. I have a pretty annoying bug that I'm trying to troubleshoot. I thought I'd post here in hopes of some help. The issue is that I've created two classes, one for drawing text and the other for drawing a simple triangle primitive. Independently, the triangle works fine. However, the text issues a warning that the IBuffDesc::SetprivateData member is being called more than once (leaking). I'm not sure how that's occurring. But the real problem comes in when try to run both my triangle and text function in a row. I receive this error: [b]D3D10: ERROR: ID3D10Device::Draw: Input Assembler - Vertex Shader linkage error: Signatures between stages are incompatible. The reason is that the input stage requires Semantic/Index (POSITION,0) as input, but it is not provided by the output stage. [ EXECUTION ERROR #342: DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND ] [/b] And then the text draws, but no the triangle. From the description of the error, it sounds like something is happening to my input assembler or vertex buffer? Not sure. Here are the constructors for each object: Triangle: [code] triangle::triangle() { //Input layout variable, we specify this for each object type. D3D10_INPUT_ELEMENT_DESC ElemDesc[] = { {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0}, }; unsigned int num_elements; //Number of elements in ElemDesc num_elements = sizeof(ElemDesc)/sizeof(ElemDesc); ShaderFlags = D3D10_SHADER_ENABLE_STRICTNESS; HRESULT hr = D3DX10CreateEffectFromFile( L"Shyr.fx", NULL, NULL, "fx_4_0", ShaderFlags, 0, pd3dDevice, NULL, NULL, &Effect, NULL, NULL ); if( FAILED( hr ) ) { MessageBox( NULL, L"The FX file cannot be located. Please run this executable from the directory that contains the FX file.", L"Error", MB_OK ); } Technique = Effect->GetTechniqueByName("Render"); Technique->GetPassByIndex(0)->GetDesc(&PassDesc); //----------------------------------------------------------- //Creates the input layout. Throwing a destructor right now because I can't think of an elegant way to test for failure in a constructor. //TODO: Find out if there is an elegant way to test for failure in a constructor. //----------------------------------------------------------- if (FAILED(pd3dDevice->CreateInputLayout(ElemDesc, num_elements, PassDesc.pIAInputSignature, PassDesc.IAInputSignatureSize, &VertexLayout))) { MessageBox(NULL, L"Failed to create input layout for Triangle object. Occurs in destructor.", L"Error", MB_OK); } pd3dDevice->IASetInputLayout(VertexLayout); vertices = new SimpleVertex[3]; vertices[0] = D3DXVECTOR3(0.0f, 0.5f, 0.5f); vertices[1] = D3DXVECTOR3(0.5f, -0.5f, 0.5f); vertices[2] = D3DXVECTOR3(-0.5f, -0.5f, 0.5f); BuffDesc.ByteWidth = (sizeof(SimpleVertex) *3); BuffDesc.Usage = D3D10_USAGE_DEFAULT; BuffDesc.BindFlags = D3D10_BIND_VERTEX_BUFFER; BuffDesc.CPUAccessFlags = 0; BuffDesc.MiscFlags = 0; D3D10_SUBRESOURCE_DATA InitData; InitData.pSysMem = vertices; if (FAILED(pd3dDevice->CreateBuffer(&BuffDesc, &InitData, &VertexBuffer))) { MessageBox(NULL, L"Failed to create vertex buffer.", L"Error", MB_OK); } Stride = sizeof(SimpleVertex); Offset = 0; pd3dDevice->IASetVertexBuffers(0,1,&VertexBuffer, &Stride, &Offset); }[/code] Text: [code] text::text() { /* Initial Times New Roman Font */ TimesNewRoman.Height = 24; TimesNewRoman.Width = 0; TimesNewRoman.MipLevels =0; TimesNewRoman.Italic = false; TimesNewRoman.CharSet = DEFAULT_CHARSET; TimesNewRoman.OutputPrecision = OUT_DEFAULT_PRECIS; TimesNewRoman.Quality = DEFAULT_QUALITY; TimesNewRoman.PitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; wcscpy_s(TimesNewRoman.FaceName, L"TimesNewRoman"); D3DX10CreateFontIndirect(pd3dDevice, &TimesNewRoman, &fontObject); } void text::output_text(LPCTSTR text_to_output) { //TODO: Make resolution be asked in the beginning and initialize this as needed RECT resolution = {0,0,1280,1024}; fontObject->DrawText(NULL, text_to_output, -1, &resolution, DT_CENTER, YELLOW); //ERROR OCCURS HERE } [/code] And here is the render loop: [code] void render(text & text_to_output, triangle & t) { background(); text_to_output.output_text(L"BLAH!"); t.draw(); return; }[/code]
  8. [quote name='ApochPiQ' timestamp='1301971214' post='4794461'] The question really is pretty vacuous; what is appropriate for one game or team might vary wildly from what works for someone else. [/quote] ouch. Anyway, the stem of all of this is that some colleagues of mine are preaching the glories of generic algorithms and generic programming. They're arguing that our code should be as generic and portable as possible. I see their reasoning, because it makes perfect sense. But my thought is that if you're targeting one platform and you're making a game after all, making things generic for the sake of being generic might be too much work for the reward. That said, I'm no Donald Knuth. Perhaps I have yet to see the light.
  9. [quote name='SiCrane' timestamp='1301960134' post='4794414'] That depends on what you mean by "use". If you mean writing template classes, I do so only infrequently (outside of answering questions here). If you mean using instances of existing template types I do so all the time (std::vector, std::string, smart pointers, etc.). [/quote] Ya - I use templated types constantly as well. But yes, I was referring to writing templated classes. I'm glad to hear it's pretty rare, because a couple colleagues at my office keep preaching to me how I should be using them more. But, most of the time, I just don't see the point. They're very, very brilliant structure with a lot of generic flexibility. But for game programming, it seems it's just best to use what is quick, fast, and easy. And that never seems to be templates. Interested in hearing people that have a different opinion, though.
  10. I am just curious - does anybody here frequently use C++ class templates in game programming? The other day I was looking at some of my code and noticed that I hadn't been using them much and couldn't think of any good reasons or examples to use them. Any input appreciated.
  11. When making a realtime strategy game or turn based strategy game, if you'd like for your map to be 3D - is it best to just draw a plane with DirectX and then use two dimensional coordinate system to move your objects? Anybody know a decent article about the concepts and idea?
  12. DirectX UI programming links?

    I actually have the artist. I was more curious as to, well, how to make the font affects appear on the screen with the background he designed. For example, take the DXUT sample from the Directx9 SDK. There, they have some sort of static control that has a nice background - but, like almost all directx, I can't seem to find how they did that without digging through a ton of objects that build off of this, which build off of that, which build off of that, etc.
  13. DirectX UI programming links?

    Here's a nice link to what I'm talking about: Steve
  14. Does anyone have some useful information on how to create a nice user interface using directX? Think Mass Effect (the game).
  15. I'm looking to implement a D3D text system for a game menu I'm creating. So far I've used basic DirectX text with CDXUTTextHelper, ID3DX10Sprite and ID3DX10Font. I'm wondering if anyone has a recommendation of how to implement a text system for a game menu that supports customizable drop downs and so forth. Anyone have a good link on DirectX 10 text, menus, or something related? <Yes, I've googled :)>