Dgame revived

stewarth via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Feb 26 02:03:16 PST 2015


On Thursday, 26 February 2015 at 08:03:59 UTC, Gan wrote:
> On Thursday, 26 February 2015 at 06:33:26 UTC, Gan wrote:
>> On Thursday, 26 February 2015 at 06:32:07 UTC, Gan wrote:
>>> On Thursday, 26 February 2015 at 03:17:32 UTC, stewarth wrote:
>>>> On Thursday, 26 February 2015 at 03:01:42 UTC, Rikki 
>>>> Cattermole wrote:
>>>>> On 26/02/2015 3:57 p.m., Gan wrote:
>>>>>> On Thursday, 26 February 2015 at 02:32:51 UTC, stewarth 
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> I'd also try hacking in Window.d directly to see if even 
>>>>>>> basic gl
>>>>>>> commands work, e.g. immediately after window and context 
>>>>>>> creation, try
>>>>>>> rendering a triangle then tweak the context 
>>>>>>> initialisation to see if
>>>>>>> it affects anything.
>>>>>>>
>>>>>>> It may help you track down exactly which part of the GL 
>>>>>>> setup is
>>>>>>> causing problems.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Stew
>>>>>>
>>>>>> I know almost nothing about OpenGL but using your 
>>>>>> method(sorta):
>>>>>> void reportGLErrors() {
>>>>>> GLenum errCode;
>>>>>> const GLubyte *errString;
>>>>>> if ((errCode = glGetError()) != GL_NO_ERROR)
>>>>>> {
>>>>>>     writeln("OPEN GL ERROR: ", errCode);
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> I get error code 1282 repeatedly.
>>>>>>
>>>>>> From a google search someone says:
>>>>>> "First, glGetError() will return 1282 - invalid operation 
>>>>>> if the GL
>>>>>> context is not current (or not yet created). So, create 
>>>>>> your context
>>>>>> first, then call glGetError. And, verify that any parent 
>>>>>> class or member
>>>>>> class does not call GL functions in their constructors or 
>>>>>> prior to
>>>>>> context being created."
>>>>>>
>>>>>> Can someone with more OpenGL knowledge clarify what this 
>>>>>> means?
>>>>>
>>>>> 1. Program starts
>>>>> 2. Window gets created
>>>>> 3. Context gets created
>>>>> 4. Context is activated
>>>>> 5. Profit???
>>>>>
>>>>> Basically before the context is created and activated you 
>>>>> cannot call any OpenGL functions. If you do, they will 
>>>>> error out.
>>>>>
>>>>> The bit about constructors ext. don't worry about it. Its 
>>>>> just about e.g. where the calls to OpenGL can exist.
>>>>
>>>> Yes, my bad sorry, but whatever works. The point is dive in 
>>>> and start printfing about in Window.d, checking error codes 
>>>> to try and figure out where things become stuffed up.
>>>>
>>>>
>>>> Cheers,
>>>> Stew
>>>
>>> I did what you suggested. I added a bunch of writeln and 
>>> reportGLErrors. These are the results:
>>> glMatrixMode(GL_PROJECTION);
>>> OPEN GL ERROR: 1282
>>>
>>>
>>>
>>> glLoadIdentity();
>>> OPEN GL ERROR: 1282
>>>
>>>
>>>
>>> glShadeModel(GL_FLAT);
>>> OPEN GL ERROR: 1282
>>>
>>>
>>> glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
>>> OPEN GL ERROR: 1280
>>>
>>>
>>> glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
>>> OPEN GL ERROR: 1280
>>>
>>>
>>> glOrtho(0, vMode.width, vMode.height, 0, 1, -1);
>>> OPEN GL ERROR: 1282
>>>
>>>
>>> Each error happens after each line is called. I'm not sure 
>>> why this happens or what it means.
>>
>> According to docs: 1280 is GL_INVALID_ENUM
>
> Figured it out. DGame wants OpenGL 3.0+ context. However it 
> uses some functions in OpenGL 2.1 that have been depreciated. 
> The mac OpenGL doesn't allow depreciated functions.
>
> DGame's OpenGL code is too outdated to run on a 3.0+ GL context 
> on mac.
>
> Required fix: Either lower the context to 2.1 or upgrade the 
> code to not use depreciated functions.

Great job, well done :)

It's never easy debugging those sorts of errors.

/stew





More information about the Digitalmars-d-announce mailing list