Z缓冲的问题已找到线索,可能是对G2D工作流程方面理解的有偏差。
BTW,某大神好像把我和Baidwwy大神搞混了-_-||
我用G2D+MFC方式做程序,定时器调用Render和Update函数。发现初始化时不能正常启用Z轴缓冲。关闭时渲染正常,同样的代码,打开Z缓冲后三台机器有两台运行异常。这个是BUG吗?
现在DX11都普及了,DX12也正在普及中。老大是不是考虑更新下底层DX版本
已正常运行,多谢!正在找一种合适的字体,要中英文显示都看得过去,似乎不太容易找呢
ggeFont使用出错。
首先是在初始化函数中生成:
debug = Font_Create ("./ui/font/STFANGSO.TTF", 16, FONT_MODE_DEFAULT);
然后设置:
debug->SetColor(0xFF00FFFF);
debug->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAMUL | BLEND_ZWRITE);
再在渲染函数中:
debug->SetZ(0.01f);
debug->Render(0.0f, 0.0f, "10086");
输出窗口无任何显示。请在线DEBUG,呵呵
老大,是不是考虑好好出个教程啊?
现在只能凭你这小站的几篇教程,再加上开发包里的几个例程。chm只能简单的查询函数功能。要不是以前用过HGE,这工作就大了
感谢解答!代码已修正!
现在是SAFE_RELEASE这个宏未找到定义。应该#include哪个文件?
我用的是win7 64 + vc2010。
这个应该是winuser.h的问题,与g2d无关。不过总是很郁闷的,难道和XP不兼容吗?
先百度去了
检验输入语句:
if(Input_IsMouseUp(VK_LBUTTON))
看起来应该是检验鼠标左键抬起,实际上是鼠标右键抬起触发。Input_IsMouseDown(VK_LBUTTON)我这边也是右键。
请核实一下,谢谢!
fopen那段就是测试用的,目的是把文件读取到内存,用来测试内存读取xml的效果。真正使用的时候,fopen那段时没有的,函数直接接受一个void *buffer的指针,其内容来自自己的资源读取函数。
xml及相关代码,发你邮箱吧。
这是我根据提示修改的代码。采用读xml文件的LoadFile方法工作正常。采用加载到内存的Parse方法则失败。是不是我用的不对啊?
char buffer[256];
long size = 0;
FILE *fp = fopen(resource_name, "rb");
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fseek(fp, 0, SEEK_SET);
fread(buffer, size, 1, fp);
fclose(fp);
ggeXmlDocument *doc = Xml_Create();
//打开xml文件
doc->Parse(buffer);
//doc->LoadFile(resource_name);
//获取根节点
ggeXmlNode root = doc->GetRootNode();
ggeXmlNode music = root.GetFirstChild("music");
strcpy_s(name, 100, music.GetName());
ggeXmlNode item = music.GetFirstChild("volume");
hot_volume = atoi(item.GetFirstChild().GetName()); //得到volume
item = music.GetFirstChild("count");
int count = atoi(item.GetFirstChild().GetName()); //得到count
由于种种原因,我准备自己封装资源格式。但是这样文件是直接读入到内存的,音频、纹理这些G2D是支持内存流直接读取的;但是ini和xml有什么办法直接读取内存流吗?要是自己写语法分析器,就太累了
@剑孤寒
“每个小图一个sprite”?为什么不是用一个公共的sprite,然后切换纹理?
正在写一个语音播放类,发现老是出错,就做了个简单的演示程序。
具体问题是:加载同一个声音资源后,不叠加,一次一次的播放没问题,但是叠加播放就出错。大神帮忙看一下呗。
#include <stdlib.h>
#include "inc/ggebase.h"
#include "inc/ggesound.h"
using namespace gge;
ggeSound *st;
gUInt changing_color = 0xFFFFFFFF;
//帧函数
bool Frame()
{
//开始渲染
if (Graph_BeginScene())
{
//清屏
Graph_Clear();
if(Input_GetKey() == VK_SPACE)
{
changing_color = 0xFF000000 + (gUInt)(rand() * 0xFFFFFF);
st->PlayEx();
}
Graph_RenderQuad(100.0f, 120.0f, 140.0f, 160.0f, changing_color);
//结束渲染
Graph_EndScene();
}
return false;
}
int main(HINSTANCE, HINSTANCE, LPSTR, int)
{
//创建游戏引擎
if (!Engine_Create(GGE_VERSION)) return 0;
System_SetState(GGE_TITLE, "Galaxy2D Game Engine - Initiate");
//设置帧函数
System_SetState(GGE_FRAMEFUNC, Frame);
//设置帧率
System_SetState(GGE_FPS, 60);
System_SetState(GGE_USESOUND, true); //是否开启声音:是
//系统初始化
if (System_Initiate())
{
st = Sound_Load("d://1.wav", false);
//开始运行帧函数
System_Start();
}
//关闭引擎,释放资源
Engine_Release();
return 0;
}