问个纹理坐标的问题...
- C/C++ code
RECT rcSrc = {100,90,179,175};CustomVertex objData[] ={ { float(x), float(y), 0, 1, color, float(rcSrc.left/width), float(rcSrc.top/height) }, { float(rcSrc.right-rcSrc.left+x), float(y), 0, 1, color, float(rcSrc.right/width), float(rcSrc.top/height) }, { float(rcSrc.right-rcSrc.left+x), float(rcSrc.bottom-rcSrc.top+y), 0, 1, color, float(rcSrc.right/width), float(rcSrc.bottom/height) }, { float(rcSrc.right-rcSrc.left+x), float(rcSrc.bottom-rcSrc.top+y), 0, 1, color, float(rcSrc.right/width), float(rcSrc.bottom/height) }, { float(x), float(rcSrc.bottom-rcSrc.top+y), 0, 1, color, float(rcSrc.left/width), float(rcSrc.bottom/height) }, { float(x), float(y), 0, 1, color, float(rcSrc.left/width), float(rcSrc.top/height) }};for (int i=0; i<6; i++){ objData[i].tu += float(0.5/width); objData[i].tv += float(0.5/height);}// ...
就是这个rcSrc的取值问题:
在photoshop中,纹理坐标是100,90,179,175
然而在实际填到顶点的时候,要把这个坐标改为:100,90,180,176 才能显示完全,否则右边和下边会少一排像素,何故?
这个right和bottom就是宽高值,而不是从0开始计算的坐标?
[解决办法]
请楼上详细说下窗口边的问题, 我加载过一个图片,发现图片高度要比实际图片的高度矮,矮的像素数恰好等于
窗口标题栏的高度,对此一直耿耿于怀,问了几个人没一个明白的
[解决办法]
窗口大小包括了标题栏在内的,所以实际显示画面的部分要小一些
[解决办法]
一个窗口的尺寸包括了 标题栏 窗框 的尺寸.
窗框的尺寸一般不会太大, 一般的来说,计算客户区大小会减去这些非实际内容的尺寸.
比如我们创建窗口的时候通常会这样:
- C/C++ code
SetRect( &rc, 0, 0, IC_WINDOWS_WIDTH, IC_WINDOWS_HEIGHT ); AdjustWindowRect( &rc,WS_OVERLAPPEDWINDOW&(~WS_MAXIMIZEBOX)&(~WS_SIZEBOX),FALSE); hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW&(~WS_MAXIMIZEBOX)&(~WS_SIZEBOX),0,0,(rc.right - rc.left),(rc.bottom-rc.top), NULL, NULL, hInstance, NULL);
[解决办法]
QQ已经加了 , 我的运行结果就如上图