|
snir_ya wrote: My question is where do i place the game loop?
This is an open ended question as we don't really know your plan. Are these individual games running in their own process space, in a new thread, or what?
Each game (assuming they are independent) should have its own main loop more times than not - even if they have to interact with one another via IPC or whatever.
Also, don't put your main game loop in WM_PAINT for D3D or DD. It should be independent of GDI operations and either ran in or called from within the process' main loop (e.g.; WinMain(), main(), etc.).
|
|
|
|
|
Jeremy Falcon wrote: don't put your main game loop in WM_PAINT
mmmm...oatmeal...
Happy new year Jeremy!
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Mark Salsbery wrote: mmmm...oatmeal...
Mark Salsbery wrote: Happy new year Jeremy!
You too man! Here's to another great year of procrastination!
|
|
|
|
|
Jeremy Falcon wrote: Here's to another great year of procrastination!
I'm putting that off for a while...
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Cheers Jeremy and Mark - Happy new year to ya too.
|
|
|
|
|
Hello gurus,
For the wellknown Double-Checked Locking pattern,
http://www.ddj.com/184405726?pgno=1
Step 1: Allocate memory to hold a Singleton object.
Step 2: Construct a Singleton object in the allocated memory.
Step 3: Make pInstance point to the allocated memory.
After reading for a couple of times, I still do not understand why some compiler will exchange step 2 and step 3 code? If there are any exception in step 2, the swap code will make pInstance point to an invalid memory address. Any ideas why compiler do the swap?
Singleton* Singleton::instance() {
if (pInstance == 0) {
Lock lock;
if (pInstance == 0) {
pInstance =
operator new(sizeof(Singleton));
new (pInstance) Singleton;
}
}
return pInstance;
}
thanks in advance,
George
|
|
|
|
|
Generally speaking, whenever there isn't a formal specification about the exact implementation detail of a construct, a compiler developer may choose the implemenation he suppose best fullfilling the purpouse.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Thanks CPallini,
I can understand and agree with you that some compiler will swap and some will not -- implementation dependent.
My question is (I want to understand why it swaps in some compiler's implementation), according to the article, it seems that it describes why compiler swaps step 2 and step 3, but I can not understand the reason after reading it.
This is what the article says about they will describe the reason why compiler swaps the order, but I do not find and understand it. Do you have any ideas, guru?
(In section, 4 DCLP and Instruction Ordering)
--------------------
Why they might want to do that is a question
we’ll address in a moment. For now, let’s focus on what happens if they do.
--------------------
regards,
George
|
|
|
|
|
George_George wrote: his is what the article says about they will describe the reason why compiler swaps the order, but I do not find and understand it. Do you have any ideas, guru?
Thank you, but, of course, I'm far of being a guru .
Anyway, I think that authors circumstatiate their affirmation when talk about optimization, i.e. roughly speaking from sentence
Compilers might choose to execute statement...
to
... It should, therefore, not surprise you that they sometimes do.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Hi CPallini,
Sorry for my stupid.
I do not quite catch your points below, why because of your points, step 2 and step 3 are swapped?
CPallini wrote: Compilers might choose to execute statement...
to
... It should, therefore, not surprise you that they sometimes do
regards,
George
|
|
|
|
|
George_George wrote: Sorry for my stupid.
Oh don't worry about your insistence, maybe I've a naive trust in article authors!
In the article they explains (in the paragraph I signaled to you) that some compilers may try to optimize code (hopefully for parallelization on the processor pipeline or on different processor cores) that way.
I observed too that, in general, if you don't place strict constraints on your specification then someone surely will realize the requirement in very unexpected way.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Thanks CPallini,
I have re-read the article you quoted. You are right, and this section is about how to utilize multi-processor's capability to make instructions work in parallel.
But,
My question is about instruction re-ordering, not executing in parallel. They are two things.
So, I do not think the section you quoted answers my question. Do you have any ideas why compiler reordering instructions? The only reason I could think of is reorder and make assignment earlier will save one register. I want to learn your points about this.
regards,
George
|
|
|
|
|
George_George wrote: My question is about instruction re-ordering, not executing in parallel. They are two things.
Maybe (I'm, for sure, not an expert about) such a reordering gives the processor (or the processor cores) the chances to execute more machine code in parallel.
George_George wrote: So, I do not think the section you quoted answers my question. Do you have any ideas why compiler reordering instructions? The only reason I could think of is reorder and make assignment earlier will save one register. I want to learn your points about this.
The reason can also be the above but, again, I'm not an expert about...
Anyway, remember one of my points: if you give those ( indeed, very smart) people some implementation freedom then you have to expect everything can happen (and the reason maybe well hidden: perhaps that reordering better adhere to their compiler architecture, who knows?)
Happy new year, best wishes, George
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Thanks CPallini and the same to you,
Hope we can have a happy post/discussion in 2008 -- with you together.
regards,
George
|
|
|
|
|
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
I'm trying to draw pictures in my application.
The primary usage is stuff like: replacing a button picture to a lighted one on mouseover.
I tried using ID3DXSprites to do that.
does anyone do that ?
my main problem is that when creating a texture from file (.png), the image get 'smeared'
to a larger size (power of 2 size), this makes life hard for me.
|
|
|
|
|
Hanan888 wrote: my main problem is that when creating a texture from file (.png), the image get 'smeared' to a larger size (power of 2 size)
Well, I'm an OGL person moreso than DX, but... This is done for performance reasons. There may be a way to turn this option off for NP2 (non power of two) textures, but doing so will give you a SERIOUS performance hit for NP2s. It makes the computer's life harder.
Hanan888 wrote: this makes life hard for me.
It shouldn't.
|
|
|
|
|
Thank you very much but actually I knew that.
Let me just note to anyone reading this that turning textures in directX to NON_POWER_OF_2 should be done with extra attention to portability.
I finally figured out how to show those textures in the original size of the picture. Still, It looks less pretty than the original picture.
My really main concern is that I'm using the wrong technique (textures & sprites) to show pictures.
If you got anything to direct me it would be very great !
|
|
|
|
|
hi,
i am learning mfc, and having a good time doing so. i currently stuck on how to approach a particular problem: i am trying to create a control a color picker control that has four parts for self contained use in multiple projects. the four (rather simple, i know...) parts are:
1) a static box for showing the color selected
2) three separate spin controls that allow you to select the R,G, B components of the color
i know that there are several color pickers avail that do this, but i would like to create my own for use in my own projects, partly as an exercise in how to create self contained controls.
problems that i am having:
1) it is my understanding that there is no way to save a dialog as a resource by itself... the resource file is for the whole project. no importing/exporting of individual dialog resources.
2) so that's ok - i will just create a dialog class and include all of the elements that i want as memebers therein and init them in the dialog class in OnInitDialog using their individual ::Create() methods.
uh, but wait a minute... when it comes time to listening for events, don't i have to give a resource ID for the call to
DDX_Control(, , )...
?
Uh, I seem to be chasing my tail here...
Any help appreciated. - @LRG
|
|
|
|
|
Another option would be to save the dialog template in a separate file that could then be #include d in either the .rc or .rc2 file.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I suggest that you build a DLL which gives access to, or maybe exports your dialog. You need to export it if you want to be able to derrive from your dialog. The main difficulty in this case is the selection of a resource ID that's not going to be used in any of the apps that use your DLL.
Regards,
Bram van Kampen
|
|
|
|
|
In addition to the other replies...
Whatever method you choose - resource-only DLL, resource includes,
etc., the most important thing is to manage IDs so they don't clash.
For example, I personally have a solution with several EXEs that share an MFC
extension DLL, and also share common code that is compiled/linked directly into
several EXEs. From the start, I set aside blocks of resource IDs for each - one block
for the shared DLL, one for common code, and one for EXEs. For new projects, I
just have to adjust the _APS_NEXT_xxx values in the resource.h file so the Visual
Studio auto-generated IDs start in the proper range of IDs.
The info in these technical notes explains the details...
TN020: ID Naming and Numbering Conventions[^]
TN035: Using Multiple Resource Files and Header Files with Visual C++[^]
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
hi,
i am just learning mfc and finding good inspiration with this excellent site. a question i have is that many of the dialogs and controls listed on this site are described as "owner drawn". what the heck does that mean?
is that like when you attach a control to a dialog with out using a resource?
thanks - @lrg
|
|
|
|
|
|
ok, thanks... so it would seem that creating an owner drawn control is useful when you need to customize the appearance of the control.
hmm... that's not what i need to do, so i will start another thread with my next question.
|
|
|
|
|