配音員發表
配音員列表一出來,這還真的是令人訝異耶
三位男角色還好,都是近年較常見的
重點是女角色的部分,竟然有許久不見的兩位老牌配音員
藤田 淑子是一休和尚
鶴 ひろみ則是布馬與阿圓(古靈精怪)
尤其阿圓竟然是配怨婦「六條御息所」
真是令人吃驚
雖然源氏物語的改編作品很多,電視劇、電影或是漫畫所在多有
但以較為接近原作(漫畫版 大和和紀:源氏物語)的部分來做成動畫卻是第一次
希望能夠成功
不過還不清楚動畫版人物設定是誰
少女漫畫的畫風要轉成動畫通常不太好掌握
要能成功這是個大重點啊
//假设之前已经执行完创建窗口以及Ogre::Root对象的过程
//hWnd为窗口句柄,root为Ogre::Root类型实例
Ogre::NameValuePairList params;//构造参数
std::stringstream ss;
ss<<hwnd; //窗口句柄
params["externalWindowHandle"] = ss.str();//把窗口句柄做为字符串形式设置到参数中
root->initialise(false);//Ogre::Root对象初始化参数为false,表示手动创建渲染窗口
//下面创建渲染窗口
Ogre::RenderWindow * window = _root->createRenderWindow("name", //名称
width,//宽度
height, //高度
false, //是否全屏显示
¶ms);
後續交給讀者...#include "ExampleFrameListener.h" //為了使用Singleton #include "OgreSingleton.h" //使用IME函式庫 #include "imm.h"
///這邊是取得轉換完成的字串,直接傳給GUI System的injectChar
virtual void GetIMECompResultString(const Ogre::UTFString& tempString) { } ///這邊是取得轉換中的字串,主要是給像新注音需要另外產生視窗來顯示暫時性文字的 virtual void GetIMECompString(const Ogre::UTFString& tempString) { }
static LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
//自己處理的IME轉換
case WM_IME_COMPOSITION:
HIMC hImc = ImmGetContext(hwnd);
//正式取得轉換的字串
if (lParam & GCS_RESULTSTR)
{
//ImmGetCompositionStringA( hImc, GCS_RESULTSTR, tCharPtr, dwBufLen );
DWORD dwBufLen;
wchar_t* tCharPtr;
dwBufLen = ImmGetCompositionStringW( hImc, GCS_RESULTSTR, 0, 0 );
if(dwBufLen > 0)
{
tCharPtr = new wchar_t[dwBufLen];
memset( tCharPtr, 0, sizeof(wchar_t) * dwBufLen );
ImmGetCompositionStringW( hImc, GCS_RESULTSTR, tCharPtr, dwBufLen );
tempString = tCharPtr;
ExampleCFrameListener::getSingletonPtr()->GetIMECompResultString(tempString);
}
}// if(lParam...
//取得轉換中的字串
else if (lParam & GCS_COMPSTR)
{
//ImmGetCompositionStringA( hImc, GCS_RESULTSTR, tCharPtr, dwBufLen );
DWORD dwBufLen;
wchar_t* tCharPtr;
dwBufLen = ImmGetCompositionStringW( hImc, GCS_COMPSTR, 0, 0 );
if(dwBufLen > 0)
{
tCharPtr = new wchar_t[dwBufLen];
memset( tCharPtr, 0, sizeof(wchar_t) * dwBufLen );
ImmGetCompositionStringW( hImc, GCS_COMPSTR, tCharPtr, dwBufLen);
tempString = tCharPtr;
ExampleCFrameListener::getSingletonPtr()->GetIMECompString(tempString);
}
else
ExampleCFrameListener::getSingletonPtr()->GetIMECompString("");
}// if(lParam...
ImmReleaseContext(hwnd, hImc);
break;
protected: HINSTANCE mHInstance; // HInstance of application, for ime HWND hwnd;//HWND of appliction for the new windows
if(mRoot->showConfigDialog())
{
// If returned true, user clicked OK so initialise
// Here we choose to let the system create a default rendering window by passing 'true'
/// But the chinese need a manual window. Set it false for manual.
mWindow = mRoot->initialise(false);
/// then create a new window for IME
setupWindow();
return true;
}
mHInstance = GetModuleHandle( NULL );
WNDCLASS wincl = { 0, ExampleCFrameListener::WindowProcedure, 0, 0, mHInstance,
LoadIcon(0, IDI_APPLICATION), LoadCursor(NULL, IDC_ARROW),
(HBRUSH)GetStockObject(BLACK_BRUSH), 0, "OgreChineseWnd" };
RegisterClass (&wincl);
hwnd = CreateWindow("OgreChineseWnd", "", WS_OVERLAPPEDWINDOW,
left, top, width, height, HWND_DESKTOP, 0, mHInstance, 0);
SetWindowTextW( hwnd, L"Ogre中文輸入測試視窗");
Ogre::NameValuePairList params;
params["externalWindowHandle"] = StringConverter::toString((int)hwnd);
mWindow = mRoot->createRenderWindow("Ogre Render Window", width, height, false, ¶ms);
ShowWindow (hwnd, SW_SHOWNORMAL);
void GetIMECompResultString(const Ogre::UTFString& tempString)
Ogre::UTFString temp = tempString;
for (int i = 0; i < temp.size();i++)
{
CEGUI::System::getSingleton().injectChar( temp[i] );
}