Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi Windows下的OpenGL文本定位_Winapi_Opengl_Text - Fatal编程技术网

Winapi Windows下的OpenGL文本定位

Winapi Windows下的OpenGL文本定位,winapi,opengl,text,Winapi,Opengl,Text,我正在开发一个OpenGL应用程序,它有两种工作模式:窗口模式和全屏模式 该应用程序使用OpenGL显示多个图形对象,并使用相同的API编写一些文本字符串。当作为窗口应用程序运行时,程序在其预期位置显示文本字符串,但当全屏运行时,文本字符串显示在其预期位置的上方位置 该应用程序使用wglUseFontBitmap创建字体,并使用glCallList显示文本字符串(它使用glRasterPos2i设置文本位置)。在显示文本之前,我调整文本位置,向Y坐标添加偏移。我使用GetDCOrgEx Win3

我正在开发一个OpenGL应用程序,它有两种工作模式:窗口模式和全屏模式

该应用程序使用OpenGL显示多个图形对象,并使用相同的API编写一些文本字符串。当作为窗口应用程序运行时,程序在其预期位置显示文本字符串,但当全屏运行时,文本字符串显示在其预期位置的上方位置


该应用程序使用wglUseFontBitmap创建字体,并使用glCallList显示文本字符串(它使用glRasterPos2i设置文本位置)。在显示文本之前,我调整文本位置,向Y坐标添加偏移。我使用GetDCOrgEx Win32 API调用获得该偏移量。

我认为在进入全屏模式后必须再次调用GetDCOrgEx,或者您已经这样做了吗?如果您可以将代码发布到调用GetDCOrgEx的位置并计算Y偏移量,这会有所帮助

编辑:另一个想法:是否可以使用相同的Y偏移,但为负值?或者计算Y位置,然后使用高度ypos?有一些在全屏显示时使用glRasterPos2i的软件与其他软件不同:

  if(!state->fullScreen)
    // if fullScreen (don't forget the image/GL y-coord vertical flip)
    glRasterPos2i((w - state->img->cols())/2, (h - state->img->rows())/2);
  else
    // for non-fullscreen images
    glRasterPos2i(0,h);

以下是计算Y偏移的代码:

POINT vOffset;

m_hdc = GetDC(m_hWnd);
if (m_hdc)
{
  GetDCOrgEx(m_hdc, &vOffset);
  m_iYOffset = vOffset.y;
}

一旦程序设置了全屏模式,就会调用上述代码。每次需要编写文本字符串时,我都试图调用
GetDCOrgEx
,但文本的写入位置与调用
GetDCOrgEx
时的位置相同。

Schnaader,非常感谢您的回答

我已经解决了修改如何计算需要添加到Y坐标的偏移量的问题。现在,使用以下代码计算偏移量:

m_iYOffset = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYBORDER);

上面的代码解决了我的应用程序的问题。

现在接受您自己的答案,这样我们就可以摆脱这个未回答的问题。顺便说一句,我认为你不应该为你的英语辩解。非常好:)