September 03 DerelictGL program draw nothing | |
|---|---|
Why this simple program don't show white square?
import std.stdio;
import derelict.opengl3.gl;
import derelict.glfw3.glfw3;
const uint width = 200;
const uint height = 200;
void init()
{
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-width,width,-height,height,-1,1);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2d(0,0);
glVertex2d(0,height);
glVertex2d(width,height);
glVertex2d(height,0);
glEnd();
}
void main()
{
DerelictGL.load();
DerelictGLFW3.load();
glfwInit();
GLFWwindow window;
window = glfwCreateWindow(width,height,GLFW_WINDOWED,"Hello
DerelictGLFW3",null);
init();
bool opened = true;
while(opened)
{
opened = !glfwGetWindowParam(window,GLFW_CLOSE_REQUESTED) &&
!glfwGetKey(window,GLFW_KEY_ESC);
display();
glfwSwapBuffers(window);
glfwWaitEvents();
}
glfwTerminate();
}
| |
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to Zhenya | On Monday, 3 September 2012 at 15:21:59 UTC, Zhenya wrote:
> Why this simple program don't show white square?
> void display()
> {
> glClear(GL_COLOR_BUFFER_BIT);
> glBegin(GL_POLYGON);
> glVertex2d(0,0);
> glVertex2d(0,height);
> glVertex2d(width,height);
> glVertex2d(height,0); <<<<<<<< glVertex2d(width, 0)
> glEnd();
> }
If that doesn't work, maybe you need to wind the vertices the
other way to avoid backface culling, ie:
glVertex2d(0, 0)
glVertex2d(width, 0)
glVertex2d(width, height)
glVertex2d(0, height)
|
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to cal | On Monday, 3 September 2012 at 16:57:08 UTC, cal wrote:
> On Monday, 3 September 2012 at 15:21:59 UTC, Zhenya wrote:
>> Why this simple program don't show white square?
>> void display()
>> {
>> glClear(GL_COLOR_BUFFER_BIT);
>> glBegin(GL_POLYGON);
>> glVertex2d(0,0);
>> glVertex2d(0,height);
>> glVertex2d(width,height);
>> glVertex2d(height,0); <<<<<<<< glVertex2d(width, 0)
>> glEnd();
>> }
>
> If that doesn't work, maybe you need to wind the vertices the
> other way to avoid backface culling, ie:
>
> glVertex2d(0, 0)
> glVertex2d(width, 0)
> glVertex2d(width, height)
> glVertex2d(0, height)
that dosn't work
|
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to Zhenya | On Monday, 3 September 2012 at 17:02:46 UTC, Zhenya wrote:
> that dosn't work
How large is your window?
glViewport(0,0,width,height);
should really be setting to the window size - so if you make your
window 800,800, this should be
glViewport(0,0,800,800);
|
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to cal | On Monday, 3 September 2012 at 17:08:55 UTC, cal wrote:
> On Monday, 3 September 2012 at 17:02:46 UTC, Zhenya wrote:
>> that dosn't work
>
> How large is your window?
>
> glViewport(0,0,width,height);
>
> should really be setting to the window size - so if you make
> your window 800,800, this should be
>
> glViewport(0,0,800,800);
Just saw it, never mind. Also, I think before you draw, you need
to set the matrix mode to modelview, and load identity...
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
display();
|
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to cal | On Monday, 3 September 2012 at 17:12:04 UTC, cal wrote: > On Monday, 3 September 2012 at 17:08:55 UTC, cal wrote: >> On Monday, 3 September 2012 at 17:02:46 UTC, Zhenya wrote: >>> that dosn't work >> >> How large is your window? >> >> glViewport(0,0,width,height); >> >> should really be setting to the window size - so if you make >> your window 800,800, this should be >> >> glViewport(0,0,800,800); > > Just saw it, never mind. Also, I think before you draw, you > need to set the matrix mode to modelview, and load identity... > > glMatrixMode(GL_MODELVIEW); > glLoadIdentity(); > display(); const uint width = 200; const uint height = 200; > glMatrixMode(GL_MODELVIEW); > glLoadIdentity(); > display(); I added it to this code,but nothing changed( |
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to Zhenya | On Monday, 3 September 2012 at 17:16:54 UTC, Zhenya wrote:
> I added it to this code,but nothing changed(
Its a puzzler then, FWIW the following code works for me (I don't
use GLFW, I have my own window routines, but the opengl-specific
calls are the same).
Window("window1", WindowState(0,0,200,200), Flag!"Create".yes,
Flag!"Show".yes);
Window.makeCurrent("window1");
glViewport(0,0,200,200);
glClearColor(0,0,0,1);
bool finish = false;
while (!finish)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-200, 200, -200, 200, -1, 1);
glClear( GL_COLOR_BUFFER_BIT );
glBegin(GL_POLYGON);
glVertex2d(0, 0);
glVertex2d(0, 200);
glVertex2d(200, 200);
glVertex2d(200, 0);
glEnd();
Window().swapBuffers();
if (Window().keyState().keys[KEY.KC_ESCAPE])
finish = true;
}
Perhaps something in the GLFW init is modyfying some OpenGL
defaults or something, you might like to ask on their forum.
|
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to Zhenya | On Monday, 3 September 2012 at 15:21:59 UTC, Zhenya wrote:
> Why this simple program don't show white square?
>
> import std.stdio;
>
> import derelict.opengl3.gl;
> import derelict.glfw3.glfw3;
>
> const uint width = 200;
> const uint height = 200;
>
> void init()
> {
> glViewport(0,0,width,height);
> glMatrixMode(GL_PROJECTION);
> glLoadIdentity();
> glOrtho(-width,width,-height,height,-1,1);
> glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
> }
>
> void display()
> {
> glClear(GL_COLOR_BUFFER_BIT);
> glBegin(GL_POLYGON);
> glVertex2d(0,0);
> glVertex2d(0,height);
> glVertex2d(width,height);
> glVertex2d(height,0);
> glEnd();
> }
>
> void main()
> {
> DerelictGL.load();
> DerelictGLFW3.load();
> glfwInit();
> GLFWwindow window;
> window = glfwCreateWindow(width,height,GLFW_WINDOWED,"Hello
> DerelictGLFW3",null);
> init();
> bool opened = true;
> while(opened)
> {
> opened = !glfwGetWindowParam(window,GLFW_CLOSE_REQUESTED) &&
> !glfwGetKey(window,GLFW_KEY_ESC);
> display();
> glfwSwapBuffers(window);
> glfwWaitEvents();
> }
> glfwTerminate();
> }
width and height must be int, not uint.
After window = glfwCreateWindow();
put glfwMakeContextCurrent(window);
And it will work!
|
September 03 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to Ivan Agafonov | On Monday, 3 September 2012 at 18:47:25 UTC, Ivan Agafonov wrote:
> On Monday, 3 September 2012 at 15:21:59 UTC, Zhenya wrote:
>> Why this simple program don't show white square?
>>
>> import std.stdio;
>>
>> import derelict.opengl3.gl;
>> import derelict.glfw3.glfw3;
>>
>> const uint width = 200;
>> const uint height = 200;
>>
>> void init()
>> {
>> glViewport(0,0,width,height);
>> glMatrixMode(GL_PROJECTION);
>> glLoadIdentity();
>> glOrtho(-width,width,-height,height,-1,1);
>> glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
>> }
>>
>> void display()
>> {
>> glClear(GL_COLOR_BUFFER_BIT);
>> glBegin(GL_POLYGON);
>> glVertex2d(0,0);
>> glVertex2d(0,height);
>> glVertex2d(width,height);
>> glVertex2d(height,0);
>> glEnd();
>> }
>>
>> void main()
>> {
>> DerelictGL.load();
>> DerelictGLFW3.load();
>> glfwInit();
>> GLFWwindow window;
>> window = glfwCreateWindow(width,height,GLFW_WINDOWED,"Hello
>> DerelictGLFW3",null);
>> init();
>> bool opened = true;
>> while(opened)
>> {
>> opened = !glfwGetWindowParam(window,GLFW_CLOSE_REQUESTED) &&
>> !glfwGetKey(window,GLFW_KEY_ESC);
>> display();
>> glfwSwapBuffers(window);
>> glfwWaitEvents();
>> }
>> glfwTerminate();
>> }
>
> width and height must be int, not uint.
> After window = glfwCreateWindow();
> put glfwMakeContextCurrent(window);
> And it will work!
Thank you very much)
|
September 04 Re: DerelictGL program draw nothing | |
|---|---|
Posted in reply to Zhenya | But why it doesn't convert uint to int correctly? |
« First ‹ Prev 1 2 |
|---|

Reply