平民程序 - linghuye's blog

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘事如潮人如水,只笑江湖几人回。

随笔 - 221, 文章 - 0, 评论 - 680, 引用 - 0
数据加载中……

3D世界寻路问题的解决方案


Reference to: http://www.ai-blog.net/archives/2008_07.html

今天某人问到我3D游戏的寻路,我现在的公司是从来只做伪3D,绝对不做真3D的,我是没实作过3D寻路的.
我想起Game Gems里有篇文章论述这个问题,当初只是粗略看了看,有点印象,接着搜索资料时,找到这篇博客文.
看完上文,我对3D游戏的寻路再无疑惑,真是完美的方案,强烈推荐阅读.

贴几张原文中的图,呵呵,魔兽世界的寻路方案也知道了.



posted @ 2009-06-18 19:57 linghuye 阅读(5746) | 评论 (11)编辑 收藏

如何让Ansi工程支持Unicode Edit的输入

1.使用CreateWindowExW创建控件,如
hEditWnd = CreateWindowExW(WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE, L"Edit", NULL, WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL, 0, 0, 300, 24, m_hWnd, (HMENU)IDC_UNICODE_EDIT, NULL, NULL);

2.在焦点进入Edit控件时,进入自己的消息泵,此消息泵使用GetMessageW,DispatchMessageW来完成消息分发.
 m_bStopMonitorUnicodeEdit = false;
 for(;;)
 { 
  if(m_bStopMonitorUnicodeEdit)
   break;
  
  MSG msg = { 0 };
  BOOL bRet = ::GetMessageW(&msg, NULL, 0, 0);
  if(bRet == -1)
  {
   continue;   // error, don't process
  }
  else if(!bRet)
  {
   break;  // WM_QUIT! exit message loop
  }
  
  ::TranslateMessage(&msg);
  ::DispatchMessageW(&msg);
 }

4.在焦点退出Edit控件时, 退出消息泵.
    m_bStopMonitorUnicodeEdit = true;

Reference:
在网络上查过资料,那些回答都是垃圾,连问题的根源都没摸著边.

posted @ 2009-04-17 10:28 linghuye 阅读(1987) | 评论 (1)编辑 收藏

程序的工作态度

清明加年假,休了5天,在妻子的老家,一个闽浙赣三省交界的乡村过的.春暖花开,过得相当的惬意.回福州的客车上,暮色霭霭,望着窗外,想着自己何时才能过上惬意的人生,想给自己放假时就放假,放个几天也可,几个月也可,十几年也可,不用为生计发愁.虽然,现在的薪资也算高了,但是离开这份工作,我的生活依然没有保障,这种感觉让我非常地不舒服.

我经常想,没有经济自由就没有独立人格,写出程序也都是垃圾.我在公司里写的全是丑陋的产品代码,没有生气,没有灵魂,我自己看着都觉得恶心.我在公司里写的没有一个是完全按自己的思路实现的程序,全是市场,上头,保持兼容,保持稳定的思路.我就是一个代码工人,听到有人叫我牛人,我都觉得非常害臊,我大部分时间写的代码都是在养家糊口,只能在博客里发发牢骚,写写自己喜欢的代码.

还有公司里评比,评审这些事,我憎恶这种感觉,源于我憎恶被别人考试这种感觉.大学毕业时,就因这种感觉跟系主任和论文指导老师都闹翻了,因为他们总让我感觉,他们能左右我的前路,如果不听从他们的建议,他们能损害我的利益,这种感觉令我非常不舒服,浑身上下每个毛孔都不舒服.

工作几年后,在工作中总是碰到无穷无尽的Bug,很多Bug很烦人,扰得几天心绪不宁,一直在想这些Bug到底是怎么回事,即使休息时一想起这些Bug,就像想起不开心的往事,搞得心情很糟.所以,之后我学会了在非工作时间忘记这些事情,不在休息时去想这些问题,否则生活会相当地痛苦.怎样忘记这些Bug? 一定学工作无所谓些!不能为了几行代码,电脑里的几段指令,这些虚无的技术,搞得自己的实体生活都不开心,回家多陪陪老婆孩子才是生活的真正意义.

为,早日退休,过上无忧无虑的生活,而奋斗终生!

posted @ 2009-04-17 00:11 linghuye 阅读(2890) | 评论 (13)编辑 收藏

Galaxy Texture Demo

Pixel Shader实现Galaxy效果,ShaderX2中使用cg实现.此Demo使用glsl和hlsl实现.
http://www.cnitblog.com/Files/linghuye/GalaxyTexture.rar

按Enter键切换galaxy模式,按小键盘数字键切换变换速度.

References:
ShaderX2: Galaxy Texture

posted @ 2009-04-14 23:00 linghuye 阅读(1399) | 评论 (0)编辑 收藏

向量在另一个向量上的投影



若v向量为单位向量,则结果为 uv向量的点积 * v向量.
即: 某个方向力u, 在v方向上的分量.

为备忘转载自: http://www.cnblogs.com/wswqwps/archive/2008/10/25/1319349.html

posted @ 2009-03-19 14:16 linghuye 阅读(8769) | 评论 (1)编辑 收藏

图像边缘检测Demo

DestinyMatrix底层实现下的图像边缘检测shader. OpenGL&DirectX实现.
Shader源码改编于<ShaderX2> Advanced Image Processing with DirectX 9 Pixel Shaders

http://www.cnitblog.com/Files/linghuye/EdgeDetection.rar
http://www.cnitblog.com/Files/linghuye/RobertsCross.rar

posted @ 2009-02-08 16:27 linghuye 阅读(2016) | 评论 (2)编辑 收藏

ScaleformDemo

实验整合Scaleform与我的DestinyMatrix引擎,写的Demo,仅作测试.
http://www.cnitblog.com/Files/linghuye/ScaleformDemo2.rar

posted @ 2009-02-03 21:01 linghuye 阅读(1956) | 评论 (6)编辑 收藏

推荐一个搜索图形学电子书的站点

http://www.ebookee.com.cn

这是个搜索电子书的搜索引擎,搜索到的文件大多放在国外的下载服务站点上,下载很慢但是确实能下载.

我最近在上面找到:
RealTimeRendering 2nd
RealTimeRendering 3rd(最新第3版,Amazon上卖八十多美刀)
Artificial Intelligence for Games.pdf
Advanced Lighting and Materials With Shaders.pdf
Mobile 3D Graphics with OpenGL ES and M3G.pdf
The.Art.of.Multiprocessor.Programming.pdf
RealisticRayTracing.djv

凡是出过电子版的大多都能查到,并下载到.
比如:
Collision Detection in Interactive 3D Environments
Game.Physics
Physically-Based Rendering

posted @ 2009-01-23 20:31 linghuye 阅读(2159) | 评论 (3)编辑 收藏

GL_ALPHA/GL_LUMINANCE/GL_INTENSITY之差别

The difference between the three single-component texture formats, GL_ALPHA, GL_LUMINANCE and GL_INTENSITY, is in the way the four-component RGBA color vector is generated. If the value for a given texel is X, then the RGBA color vector generated is:

    * GL_ALPHA: RGBA = (0, 0, 0, X)

    * GL_LUMINANCE: RGBA = (X, X, X, 1)

    * GL_INTENSITY: RGBA = (X, X, X, X)

In other words, if we interpret the alpha as transparency, GL_ALPHA would represent a completely black texture with varying transparency, GL_LUMINANCE is an opaque texture with varying color (a grayscale image), and GL_INTENSITY is a combination where both the color and alpha channel is varying.

一个很隐晦的错误:
 glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, nWidth, nHeight, 0, GL_ALPHA, GL_UNSIGNED_BYTE, data);
可以确定当前2D纹理是有效的,data图像数据是正确的,但最终得到的纹理显示出来的图像竟然是错误的?
 查出 之前有一个glPixelStorei是错误根源, 当前的GL_PACK_ALIGNMENT,GL_UNPACK_ALIGNMENT,GL_UNPACK_ROW_LENGTH值会影响外部data最终到达纹理的方式,特别是GL_UNPACK_ROW_LENGTH!!!

Reference:
http://www.gamedev.net/community/forums/topic.asp?topic_id=307568

posted @ 2008-08-23 18:35 linghuye 阅读(6350) | 评论 (0)编辑 收藏

OpenGL3.0标准发布

等了这么久,OpenGL3.0标准终于发布了.还没仔细看spec,据Gamedev上的反应说,OpenGL3.0没有如之前承诺的基于对象概念重写接口,而仍只是常规的添加新函数功能而已.

"开发者社区对此非常愤怒认为OpenGL3.0其实是OpenGL2.2,许多开发者表示要迁移到DX10上。"

OpenGL在Windows平台上的游戏开发是越来越式微了.我想过去,只有两种游戏开发商会用OpenGL,一是Carmack这种超级大牛人,二是暴雪这种要通吃苹果操作系统的开发商.
对于我这种小程序员,也就写写工具,做做Demo用的着,并且有希望在手机平台上搞搞OpenGL.嘿嘿,幸亏为了养家糊口,我对很有钱途的DirectX也很熟.上班我用DirectX,下班我搞OpenGL,并且到现在还没有人格分裂.我享受着OpenGL给我的自由(我不用强迫装Vista系统就能试验只有DX10才有的功能),同时又能用DirectX赚着钞票,这是理想和现实完美结合的典范.
其实,我想说的是,我对OpenGL很失望.

补: 把文档看了一遍,果然,就是加了很多新功能,OpenGL3.0依然100%兼容旧代码,不需要如之前传闻的说接口升级.只是额外加了个Deprecation Model,就是创建一个只向前兼容的OpenGL context,在这个Context下,一些老旧的接口被废弃了.这个完完全全是个商业妥协的过渡式的解决方案.

标准文档:
www.khronos.org/opengl

posted @ 2008-08-14 22:12 linghuye 阅读(2437) | 评论 (4)编辑 收藏

仅列出标题
共23页: 1 2 3 4 5 6 7 8 9 Last