自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(251)
  • 资源 (1)
  • 论坛 (33)
  • 收藏
  • 关注

原创 Skinned Mesh原理解析和一个最简单的实现示例

Skinned Mesh原理解析和一个最简单的实现示例 作者:n5 本文的github地址:https://github.com/happyfire/SkinnedMeshDemo

2008-10-19 23:24:00 33841 24

原创 关于ShadowMap中Shadow acne现象的解释

什么是Shadow acne先看一张图:这张图是我在GAMES202的作业1中,将光源高度调低,从而使得光线入射方向和地面之间夹角比较小,并且不做任何bias处理,从而得到比较明显的shadow acne现象。即左边地面上奇怪的花纹。产生Shadow ance的原因原因其实很简单,简单说,shadow map对于光源空间的深度的采样是离散的,shadow map上每个texel只能记录一个深度值。而计算阴影的平面,比如地面本身是连续的。在传统shadow map的第二个pass中,将任意片段所对应

2021-04-12 19:27:40 118

原创 游戏开发基础知识之垂直同步V-Sync

什么是垂直同步V-Sync垂直同步是显卡提供的一个功能,目的是将游戏帧率和显示器的刷新率进行同步。当开启V-Sync后,显卡会等待显示器本轮刷新完成,在这期间,显卡不会向显示器传输任何数据,并且通过双缓冲和页翻转(page flipping)技术确保当显示器刷新完成后获得下一帧的画面。为什么需要V-Sync呢?首先,FPS超过刷新率并不能提高实际感受到的帧率。因为你看到画面是最终要通过显示器的刷新来变化。比如显示器的刷新率是60Hz,那么如果游戏以120FPS的帧率渲染,实际上每渲染两帧才有一次更新显

2021-03-16 14:38:51 135 1

原创 Unity Prefab中MonoBehaviour脚本修改带来的序列化问题

项目中出现的问题载入一个prefab并实例化后,获取该prefab上挂载的一个MonoBehaviour组件,例如:public class Foo: MonoBehaviour{ public bool newValue = true; void Awake(){ Debug.Log(newValue); }}此时,Awake中的Log输出的是 false。分析原因Foo组件中的newValue默认为true,但是Awake时为false。这说明序列化出了问题。但是打开该pr

2021-02-08 15:15:11 278 1

原创 引擎开发随笔之资源导入

曾在十多年前看到一个大佬说,游戏引擎的核心就是资源管理。确实,游戏引擎必须要能管理好各种资源,而且不论是运行时资源还是项目工作流中的资源。今天来聊一聊资源导入,这个经常被忽略的一个引擎功能。以前我们用自研引擎做游戏几乎都会用到自定义的一些资源格式,比如模型文件格式什么的。这种自定义格式的好处是匹配自己的需求,可以根据需求优化,这是通用格式无法做到的。这种自定义资源,一般会开发专用的转换工具,将通用格式的资源转换成自定义格式的资源,并且保存在项目中。除此之外,游戏还需要对一些资源进行某种处理,比如图片如果

2020-12-26 15:04:05 128 2

原创 Unity 编辑器中修改属性值及时查看效果

需求项目中有个需求是开发一个UI适配的脚本,根据游戏运行的平台显示不同类型的UI。根据需求,游戏在运行时自动适配就可以了。但是为了方便在编辑器中查看效果,需要可以在Inspector面板中修改属性值后直接在编辑器上执行相应的适配代码,显示效果。解决方案为了在Inspector面板中修改值,我们使用一个enum属性即可,这样对应在面板上就是一个下拉列表。注意这个属性在游戏运行时是根据所在的平台动态设置的,其实并不需要public出来,也不需要序列化。但是为了能在Inspector面板中临时修改并查看效果

2020-12-02 11:04:29 1059

原创 Unity input system on-screen button crash

最近在项目中遇到一个unity input system内部的crash。大概会有类似以下报错:Assertion failedUnityEngine.InputSystem.LowLevel.<>c__DisplayClass7_0:<set_onUpdate>b__0(NativeInputUpdateType, NativeInputEventBuffer*)UnityEngineInternal.Input.NativeInputSystem:NotifyUpdate(

2020-11-14 14:50:24 163

原创 从零开始手撸WebGL3D引擎11: PostProcessing框架(里程碑5了)

文章目录项目状态PostProcessing基本原理框架设计目标框架结构PostProcessingChain的主要成员PostProcessing材质多pass后期效果举例:PostEffectBloom需要完善的地方下期预告项目状态本系列文章停更了好几个月了,这期间也是有很多事情,不过这个项目(mini3d.js)肯定是不会放弃的,只会不断的进化。最近几个月主要在深度研究Unity,以渲染系统为主,后期可能会出一系列文章,Unity自身一直在进化,但是底层的那些技术并没有发展特别快,结合Unity的

2020-10-19 14:26:00 363

原创 Unity .NET 4.x 相关知识

历史在Unity 2017.1之前,Unity使用的是一个相当于.NET 3.5的runtime,多年未更新。Unity 2017.1中,Unity引入了一个实验性的runtime版本,升级到.NET 4.6, 兼容C# 6。Unity 2018.1中,.NET 4.x不再是实验性的了,同时老的.NET 3.5 runtime被标记为legacy。Unity 2018.3中,.NET 4.x runtime被设置为默认。同时支持了C# 7。现状Unity 2019中已经不能再切换到老的.NE

2020-09-08 19:54:43 599

原创 Unity Draw call batching小结

文章目录DrawCalls 和 Batchesdraw call就是你知道的那个draw calldraw call不一定意味着状态切换静态batching静态batching更费内存静态batching不限制物体顶点数且更有效率静态batching的优化选项静态batching的缓存区限制动态batching针对Mesh的动态batching模型顶点属性限制物体包含镜像的变换不能被动态batching材质实例不同则不能合并关于使用lightmap的物体的动态合并多Pass的shader会破坏合并动态bat

2020-08-31 00:25:26 267

原创 半透明物体渲染总结

文章目录半透明渲染要解决的问题深度测试解决可见性问题的原理渲染顺序半透明物体不能开启深度写入整体透明(内部不透明)的渲染双面透明渲染混合公式Alpha Test半透明渲染要解决的问题需要将半透明物体按照正确的顺序进行渲染,以便让它们的片元和远处已经绘制到color buffer中的片元颜色进行混合,从而达到半透明的效果。为了完成颜色的正确混合,所有半透明物体应该在不透明物体渲染完成之后进行渲染,且半透明物体之间应该是按照距离camera从远到近渲染。但是物体是若干三角形图元的集合,包含了很多的片元,无法

2020-08-04 18:34:53 1044

原创 Gamma Correction & sRGB texture
原力计划

文章目录显示器gamma值的由来gamma correctionsRGB texture参考资料显示器gamma值的由来gamma correctionsRGB texture参考资料Gamma-Correction

2020-06-10 20:55:24 285

原创 法线贴图技术原理与实践
原力计划

本文讲述了法线贴图技术的原理,切线空间的概念,切线空间和世界空间的转换,计算顶点切线的方法,并给出了在切线空间和世界空间使用法线贴图进行光照的shader例子。

2020-06-09 19:00:44 460 1

原创 从零开始手撸WebGL3D引擎10: 材质,前向渲染以及里程碑4
原力计划

文章目录前言材质封装多个Pass创建Shader创建pass并添加到材质shader代码写在哪儿System UniformsCustom Uniforms渲染pass引擎提供的材质前向渲染scene.render()renderer.render()传入参数计算system uniform灯光规则如何叠加多个pass的光照非光照pass里程碑4Next前言本篇总结一下里程碑3到4阶段的材质和前向渲染的实现。本部分仍然处于早期,为了看到效果,很多地方只有思路没有实现,代码里有很多TODO。尽管很不完善,

2020-06-04 00:57:49 299 2

原创 从零开始手撸WebGL3D引擎9:Scene & Transform
原力计划

文章目录引言将物体组织成场景一个场景是一棵N叉树场景不止是一棵树从简单开始SceneNode本地矩阵计算更新世界矩阵获取世界坐标和旋转对象-组件和ECS怀念一下C++下一篇引言相比于实现很多花哨的图形效果,写引擎需要很多很扎实的东西。比如说场景和变换就是其中之一,基础中的基础。实现场景和变换的最初的动机,是我们需要在世界中移动旋转和缩放物体,物体之间需要有层级关系,可以将A放到B的上面随着B一起运动。而在这背后是矩阵和四元数的数学。我们使用四元数保存物体的方位朝向,并且可以让物体绕任意轴旋转,可以让物体

2020-05-30 19:58:56 284

原创 谈一谈3D编程中的矩阵
原力计划

行主列主,右乘左乘,空间变换,法线变换,shader中矩阵的使用,打好基础才能写好shader

2020-05-22 20:53:33 1097

原创 Unity Cg/HLSL Shader中向量和矩阵的构造方式

目录向量的构造向量使用同类型的构造器构造CG(不是所有的HLSL版本)单值构造向量使用低维向量构造高维向量CG(不是所有的HLSL版本)高维向量转换到低维向量矩阵的构造使用数值构造float3x3可以从三个向量构造从float4x4截取出float3x3参考资料向量的构造向量使用同类型的构造器构造float2 a = float2(1.0, 2.0);float3 b = float3(-1.0, 0.0, 0.0);float4 c = float4(0.0, 0.0, 0.0, 1.0);

2020-05-13 19:06:42 439

原创 从零开始手撸WebGL3D引擎8:里程碑3-一个多光源场景

目前状态暂停了一段时间后,本周又搞了几天,实现了基于多pass的多光源前向渲染,加上之前实现的基本的scene和transform,勉强可以打个分支了,暂且算作里程碑3:simple scene。虽然代码里面还有很多TODO,但勉强可以看些效果了。先上个视频: undefined 基本功能目前实现了一个简单的场景和基于组件的场景节点,支持Camera, Light 和 Mesh No

2020-05-10 16:11:27 369 2

原创 引擎开发随笔之OpenGL Shader的封装思考

在进行mini3d.js这个开源小项目的过程中,越来越体会到一个引擎的复杂性,从技术DEMO到可以完成实际工作的引擎,完全不是一个数量级的复杂度。因为工作量太大,且想做的事情太多,mini3d.js的开发笔记一直是很滞后的,当然主要原因还是开发mini3d.js对我来说已经是一个很大的工程了。为了防止时间长了忘了很多东西,以及记录一些暂时没法去做的事情,特别用随笔的形式简单记录一下,想到哪儿记到哪...

2020-04-16 13:56:43 180

原创 从零开始手撸WebGL3D引擎7:载入.obj模型以及顶点法线的计算

载入.obj格式模型.obj是文本格式的,相对比较好解析,而且可以查看,所以先暂时只支持这个格式。当然这个格式里面包含的东西不仅仅是模型数据,其实还有物体的概念,以及材质的关联。由于只是把它作为模型文件使用,所以忽略了材质的关联。材质会采用自己定义的材质,然后使用到模型上。其实这个地方没什么好说的,主要解决的问题是顶点法线的计算。顶点法线计算的时机载入.obj格式的模型时,发现有的模型没有提...

2020-02-24 14:38:36 541

原创 从零开始手撸WebGL3D引擎6:里程碑2,目前状态和展望

最近做了很多零碎的工作,归拢了一下作为里程碑2。先上截图:这是一个脚本生成的example页面,以后所有的例子可以从这个页面进入,这样就可以查看之前的示例,也方便重构代码之后回溯。这个页面我也放到了github pages上:https://happyfire.github.io/mini3d.js/examples/(但是我这儿有时候打开不了)目前,mini3d.js仍然是一个很简单的框架...

2020-02-22 20:14:00 407

原创 顶点法线计算的几种方式

首先,顶点法线都是从面法线加权平均计算得到。所以有两个维度,一是哪些面参与计算,二是权重如何计算。一 哪些面参与计算如果建模工具导出了光滑组,那么方案一是直接使用光滑组信息,属于同一个光滑组的面参与计算。方案二是同时使用光滑组信息以及面的夹角的阈值。方案三是只使用面的夹角阈值。二 权重如何计算方案一是用三角形面积作为权重方案二是用面的夹角作为权重方案三是同时使用面积和夹角作为权重...

2020-02-07 20:43:25 2007

原创 关于四元数的一些误解和问题

(先简单记录一下结论,有时间再完善)四元数可以避免gimbal lock理论上如果只使用四元数,不会有万向锁的问题。但实际上很多时候,还是在使用欧拉角,然后把欧拉角转成四元数,最后四元数再被转换成矩阵,合并到最终的Model2World变换矩阵中。这样并不能避免gimbal lock。因为你操作的旋转还是一系列绕独立轴的旋转的组合,你用欧拉角+矩阵会遇到gimbal lock (证明方法是...

2020-02-06 20:33:33 423

原创 从零开始手撸WebGL3D引擎5:Shader的封装

上一篇之后停了好久没写,但其实mini3d.js一直在进展,目前的内容够写很多篇了,但这样欠下的债就太多了。我开始思考我写这些文章的初衷,是对这个过程的记录以及思考的总结,而不是写WebGL教程。教程的问题是如果讲得很细非常花篇章,而讲得很简略又没有用处。所以本篇开始减少代码细节的描述,只重点讨论技术原理和设计思路。并且每一组文章都要紧扣着当前讨论的里程碑目标。本篇对应代码请参考:mini3d....

2020-02-01 22:56:20 406

原创 从零开始手撸WebGL3D引擎4:Mesh的封装

本篇讲述mini3d.js对静态模型的封装,目前支持三角形列,使用或不使用索引,暂不支持子模型。涉及到的类有Mesh, VertexBuffer, IndexBuffer, VertexFormat,以及预定义顶点语义VertexSemantic。总体结构一个Mesh由一个VertexBuffer和零或一个IndexBuffer构成。模型所有的顶点的属性数据采用交错数组的方式存放在Verte...

2020-01-12 15:03:41 577

原创 从零开始手撸WebGL3D引擎3:基本渲染流程介绍

写在前面虽然一个渲染框架可能很复杂,但是如果我们一开始就把事情想的很复杂往往难以下手。另一方面,现在有很多开源引擎,你直接去看也会感觉难以入手。因为复杂性是由于需求而不断增加的,甚至有的复杂性是因为历史原因。本系列文章的初衷,是记录一个可用的,简单的WebGL渲染框架的发展过程,在这个过程中加深对WebGL和图形技术的理解,并且通过实践让对知识的理解不再浮于表面。也许mini3d.js以后会变的...

2020-01-10 21:04:06 1530

原创 从零开始手撸WebGL3D引擎2:WebGL和3D编程基础概念

我们在第一篇里面浏览了一下WebGL的参考卡片,也列出了一些WebGL的功能点,但是对于没有接触过3D编程的人来说,这些东西很难理解并形成一个统一的认识。所以这篇我就以WebGL为参考平台谈谈3D编程的一些基础概念。3D坐标系变换正常来说,人们学习新东西都会从已有的知识出发,对于3D编程,在屏幕上画出3D图形,如果有2D图形API使用的基础,就会想着从2D编程的经验出发。比如对于2D编程,都是...

2020-01-09 17:01:32 1416

原创 从零开始手撸WebGL3D引擎1: 搭建项目框架

如上文所说,我希望这个基于WebGL的框架是一个独立的库,可以像一个普通的js库那样被引用,但是开发的时候又需要根据需求拆分成很多js文件,那么就涉及到一个打包问题。且这一次我想使用ES6的模块系统和ES6的语法,那么rollup.js都可以做到,好吧就他吧。既然使用js,我们就用npm初始化了一个模块:mini3d.js,需要说明的是,目前暂时没有将mini3d.js注册到npm,也许以后会,...

2020-01-08 17:47:43 909

原创 从零开始手撸WebGL3D引擎0:开始探险之旅

纸上得来终觉浅,绝知此事要躬行 ---- 陆游

2020-01-06 19:45:52 999 1

原创 打包Javascript 游戏引擎更好的选择之rollup.js

国内的基于Javascript技术栈的H5游戏引擎一般都使用gulp+browseify构建,比如cocos creator和Laya,最后构建出一个或多个引擎js文件,由于引擎文件很大,他们一般都提供了引擎裁剪功能。之前我觉得做到这样也就可以了,直到我研究了一下three.js的构建系统。three.js使用的是rollup,大概了解一下:http://rollupjs.org/guide/...

2019-09-26 23:23:21 265

原创 Mac系统移动npm的全局目录,解决安装权限问题

Mac系统安装node.js后自带的npm被安装到usr/local/下面,这样执行npm install时经常有权限问题。虽然使用sudo可以安装,但是当使用npx等工具时还是会有问题。所以最好还是将global目录移动。查看当前npm全局安装位置$ npm config get prefix/usr/local在用户目录下建立一个新的目录,并设置为npm全局的prefixmkdi...

2019-09-23 15:05:51 2363

原创 深入理解OpenGL之投影矩阵推导

图形学惯例下的平行投影矩阵推导首先,确定我们使用以下惯例:将视图坐标系中的顶点Pe变换到NDC坐标系中的顶点Pn。视图坐标系使用右手坐标系,NDC也使用右手坐标系。NDC范围为-1<= x <=1, -1<= y <=1, -1<= z <=1NDC和屏幕的对应关系为:x=1的点在屏幕右边, x=-1在左边;y=1在顶部,y=-1在底部;z=1的点距...

2019-09-19 20:29:00 1441

原创 图形学基础之透视校正插值

透视校正插值 (Perspective-Correct Interpolation)问题的提出在使用光栅化的图形学方法中,法线,颜色,纹理坐标这些属性通常是绑定在图元的顶点上的。在3D空间中,这些属性值在图元上应该是线性变化的。但是当3D顶点被透视投影到2D屏幕之后,如果在2D投影面上对属性值进行线性插值,其对应的属性在3D空间中确不是线性变化的。如下图所示:图中A,B点被投影到a,b;而...

2019-09-15 22:31:14 2086 6

原创 npm使用基础

安装和更新npmNode.js安装自带npm更新: sudo npm install npm@latest -g查看当前版本:npm -v本地包:安装,更新,卸载所谓本地包,就是只在你的项目里面使用的包。首先本地包需要安装到一个npm管理的项目目录中。对于一个新建的目录,使用npm init初始化为npm项目目录。这会在项目目录中生成一个package.json文件,即你自己的项目也是...

2019-08-29 20:11:25 185

原创 glActiveTexture和glBindTexture的一些理解

在openGL中,存在一系列的texture unit,通过 glActiveTexture激活当前的texture unit,默认的unit是0。而当前的texture unit中存在多个texture target,例如GL_TEXTURE_2D, GL_TEXTURE_CUBEMAP。通过glBindTexture将一个texture object绑定到当前激活的texture unit...

2019-05-09 18:53:37 2543 1

原创 Cubemap应用之反射,折射,菲涅耳反射

cubmap先将场景环境渲染到cubemap中,可以离线渲染,也可以实时渲染。对于静态的效果,离线就可以。离线还可以使用外部资源,如拍摄的全景图生成cubemap。想象cubemap是一个包围在场景外的立方体。通过从场景中心向其发射射线来采样上面的颜色。反射对于反射,想象cubmap上有一个像素发射光线到表面然后反射到眼睛中,为获取这个颜色,需要从视线方向反推出入射光线的方向,即使用视线的...

2019-02-20 19:27:46 536

原创 着色模型和光照模型

#着色模型:高洛德着色(Gouraud shading):即基于顶点计算颜色后在渲染的图元内部进行线性插值。当光照模型中有非线性的计算时(如计算高光反射),这种逐顶点的光照就会出问题。另外由于是图元内部线性插值,会导致渲染图元内部的颜色总是暗于顶点处,在某些情况下会产生明显的棱角现象。Phong着色(Phong shading):即在片元上计算颜色,需要对顶点法线进行插值然后进行光照模型的计...

2018-11-27 17:30:37 1099

原创 密码技术科普

密码学家的六个工具:对称密码,公钥密码,单向散列函数,消息认证码,数字签名,伪随机数生成器。单向散列函数(也称消息摘要):单向散列函数可以实现完整性的检查,可以辨别出“篡改”,但无法辨别出“伪装”。当我们不仅需要确认消息的完整性,同时还需要确认消息是否真的来自发送者,紧靠完整性检查是不够的,还需要进行“认证”。消息的完整性(integrity),指“消息没有被篡改”这一性质,完整性...

2018-06-11 15:33:20 883 1

原创 [go] binary.Write 小坑一个兼论go的错误处理哲学

有如下go代码:const ( foo = 123)buffer := new(bytes.Buffer)binary.Write(buffer, binary.BigEndian, foo)fmt.Println(buffer.Len())输出结果是0,foo没有写入到buffer中。原因在于,binary包的Write内部调用了intDataSize函数获取foo的长度:

2018-01-23 18:16:12 2068

原创 [go] Socket创建之后,listen/connect之前无法执行操作?

使用go的net库去创建一个tcp客户端连接,使用net.Dial就行,问题是Dial返回的是一个创建好且连接上的connection。如果需要在连接之前对socket做一些操作,就不行了。 比如这个问题: https://github.com/golang/go/issues/21820#issue-256441130 这兄弟是在android上面,需要对socket进行一个“protec

2018-01-11 17:24:29 635

WebGL Programming Guid (英文原版带目录)

WebGL Programming Guid (英文原版带目录),OpenGL ES programming Guid作者又一力作

2018-12-16

勤奋happyfire的留言板

发表于 2020-01-02 最后回复 2020-05-07

为什么我的SWT list的滚动条不出现?

发表于 2006-06-15 最后回复 2016-10-12

局域网win98系统被黑!100分求救!

发表于 2002-06-17 最后回复 2012-11-23

关于将VC++Express的工程迁移到Eclipse CDT的一些问题

发表于 2008-10-31 最后回复 2008-10-31

NokiaS60播放midi的问题

发表于 2006-01-20 最后回复 2006-02-05

Nokia6230i 播放MIDI问题,急!今天解决者加送100分!

发表于 2005-08-12 最后回复 2005-09-09

又是NokiaS60的问题!

发表于 2005-06-15 最后回复 2005-07-18

网游有用java写服务器的吗?

发表于 2005-06-13 最后回复 2005-06-30

J2ME联网程序服务器端调查,顺便散分~

发表于 2005-05-31 最后回复 2005-06-16

熟悉Moto的进来看看,顺便散分

发表于 2005-05-18 最后回复 2005-05-31

Nokia7650,应用程序进入后自动退出??

发表于 2005-03-02 最后回复 2005-03-10

Nokia6600开发怪事?

发表于 2004-11-25 最后回复 2005-02-18

★★★★★★★★刚发完100分,再来100分继续发★★★★★★★

发表于 2004-12-07 最后回复 2004-12-13

玩过红白机坦克大战的进来接分

发表于 2004-11-11 最后回复 2004-12-07

◎※◎※◎※◎坦克大战长年发分,up有分◎※◎※◎※◎※◎

发表于 2004-12-02 最后回复 2004-12-07

玩过红白机坦克大战的继续接分

发表于 2004-11-29 最后回复 2004-12-01

谁有EclipseMe的最新版,给我发一个谢谢!~

发表于 2004-11-24 最后回复 2004-11-25

javadoc for J2me

发表于 2004-07-28 最后回复 2004-11-24

玩过红白机坦克大战的接分

发表于 2004-11-11 最后回复 2004-11-15

玩过红白机坦克大战的接分

发表于 2004-11-11 最后回复 2004-11-12

很多人都想知道的问题

发表于 2004-07-27 最后回复 2004-11-11

高分求解手机中文问题~

发表于 2004-04-29 最后回复 2004-05-04

奇怪的指针问题!急急急!!(先给100分,不够再加)

发表于 2004-01-21 最后回复 2004-01-22

拜年!散分!

发表于 2004-01-22 最后回复 2004-01-22

vc++中的c++问题

发表于 2003-02-05 最后回复 2003-02-15

征集令c++/c初学者疑惑的难点

发表于 2002-12-17 最后回复 2002-12-19

学汇编用什么编译器比较好?

发表于 2002-08-23 最后回复 2002-08-23

pdg是什么格式,用什么软件打开??

发表于 2002-08-19 最后回复 2002-08-21

*.pdg是什么格式的?(注意不是pdf)

发表于 2002-08-20 最后回复 2002-08-21

穷举数列的问题

发表于 2002-06-26 最后回复 2002-06-27

怎样用api获取ie窗口中文本框的句柄?

发表于 2002-06-08 最后回复 2002-06-21

想学web编程,不知从何学起,请高手们指点!!

发表于 2002-06-10 最后回复 2002-06-11

c++ 与sdk问题请教。谢谢!

发表于 2002-05-08 最后回复 2002-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除