冒险解谜游戏中文网 ChinaAVG

标题: 【OpenGL汉化研究】OpenGL汉化新思路 [打印本页]

作者: shane007    时间: 2010-1-23 22:08
标题: 【OpenGL汉化研究】OpenGL汉化新思路
最近对OpenGL进行了一些研究,有了一些新的思路,先写下来备忘。7 }' I' P* c; _
5 W! X% m. m+ h* u  i
OpenGL的汉字显示,简单的说就是先用wglUseFontBitmaps函数把所有字符生成显示列表,
0 ^" k1 H* M6 e) Y9 [& W# v; C: p/ B然后用glCallList把显示列表显示出来。. }: o# A4 ~! {

% A) g/ @$ G, A" x3 Q2 n5 _: |下面说说汉化思路3 u. t$ E$ O7 l, W8 A" a/ S
思路1. 英文游戏一般只生成了英文的显示列表,所以通过汇编级加大显示列表的容量,把所有的
6 C. b3 ]8 R8 x+ |      中文字符都生成到显示列表里面,估计就可以实现汉化。当然,程序的性能可能会有影响,
0 i# a" a7 N( D. y2 a      但是,我认为生成显示列表一般在游戏初始化的时候进行一次,所以问题应该不是太大。
: r2 L) ~5 l$ J! q+ M      下面的帖子可供参考& P- x& W9 {6 x9 V; ^
      Win32下OpenGL的中文显示
% ^/ Z, [- W$ y      https://www.chinaavg.com/read.php?tid=204063 A- `6 w5 H3 `3 @" D- a
. R* }5 i6 E& u
思路2. 根据我的理解,游戏更新画面的过程一般是这样的
3 `& {" o" Z. L+ Y: N% B6 N" }% c  m2 D5 k
      更新画面函数(区域1)
+ Q) r6 x% o& \% ]8 w8 ?      更新画面函数(区域2)
8 }  M4 T& m& ?* F5 U2 J% `8 B- p      。。。
9 A5 n& h* h# k* q& ~      更新画面函数(区域3)! A" d+ ?' c6 [6 |/ v- g
      显示函数(字幕1)5 X/ H( y) u* \# p0 r
            显示函数(字幕2)5 c4 L& R/ o! Q- P
             。。。# z: |( \  t. H
      显示函数(字幕3) ) Y& r7 L, X. s. _  N) u0 }
            SwapBuffers(wglGetCurrentDC())) }* i+ t) q( M5 {( q/ Q

$ e6 u, X5 {( }# @0 s0 M3 D1 D           所以,在显示函数的入口处,我们可以内挂一个DLL,把要显示的字幕输出到一个ini文件或是内存镜像文件中,然后HOOK SwapBuffers函数,在调用真正的SwapBuffers函数以后,读取ini文件或是内存镜像文件的内容,把要显示的字幕用textout函数显示到当前DC上,即可实现汉化。
+ |% n) q  L0 C6 ^  ; c) M+ L0 a6 i) z5 W
     先把汉化思路写下来,等有空的时候再做试验,期待可以解决nibiru等使用opengl API的游戏的汉化问题。
作者: solidji    时间: 2010-9-28 16:12
准备研究下OpenGL的绘制过程




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2