﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Only Power Do I Need.</title><link>http://www.cppblog.com/shadess/</link><description>Long-term study, endless practice, strict self-discipline.</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:39:37 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:39:37 GMT</pubDate><ttl>60</ttl><item><title>D3DX11CreateEffectFromMemory 报错 E_NOINTERFACE 解决</title><link>http://www.cppblog.com/shadess/archive/2016/10/10/214324.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Mon, 10 Oct 2016 02:57:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2016/10/10/214324.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/214324.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2016/10/10/214324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/214324.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/214324.html</trackback:ping><description><![CDATA[这个问题是在学习 Introduction to 3D Game Programming with DirectX 11 一书时遇到<br />最正确的解决方案是这里 &nbsp;<a href="http://stackoverflow.com/questions/30579016/d3d11-d3dx11createeffectfrommemory-returns-e-noiterface" title="D3D11 D3DX11CreateEffectFromMemory returns E_NOITERFACE">D3D11 D3DX11CreateEffectFromMemory returns E_NOITERFACE</a><br />好像是因为D3DX库已经被弃用了. Effect也是. 而DIRECTX库也被包含在win sdk里面不再作为单独的SDK发布.&nbsp;而D3DX的库在发布时使用的是VS2010编译的, 当使用VS2012或更高版本时, 会有错误<br /><br />以上都是个人理解. 我可以保证的是肯定有理解的不对的地方.<br /><br />在stackOverflow上的大神建议的是把D3DX和Effect都用最新的接口替换掉并给出了新旧接口的对照页面链接, 太麻烦了实在不适合我这种浅尝辄止的人.<br /><br />最后我个人的解决方案是这样. VS2013中.&nbsp;<span style="color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 19.5px; background-color: #ffffff;">Project property -&gt; Configuration Properties -&gt; General -&gt; Platform Toolset -&gt; change the "Visual studio 2013 (v120)" to "Visual Studio 2013 - Windows XP (v120_xp)"<br />这样既可规避错误. 具体原因: 不明</span><img src ="http://www.cppblog.com/shadess/aggbug/214324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2016-10-10 10:57 <a href="http://www.cppblog.com/shadess/archive/2016/10/10/214324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎么列出lib文件中的obj文件</title><link>http://www.cppblog.com/shadess/archive/2015/10/17/212037.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Sat, 17 Oct 2015 14:41:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2015/10/17/212037.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/212037.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2015/10/17/212037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/212037.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/212037.html</trackback:ping><description><![CDATA[使用VS自带命令行<br />lib /list lib文件名.lib<img src ="http://www.cppblog.com/shadess/aggbug/212037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2015-10-17 22:41 <a href="http://www.cppblog.com/shadess/archive/2015/10/17/212037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C# 程序集是啥 (转)</title><link>http://www.cppblog.com/shadess/archive/2015/10/08/211968.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Thu, 08 Oct 2015 11:39:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2015/10/08/211968.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/211968.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2015/10/08/211968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/211968.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/211968.html</trackback:ping><description><![CDATA[&nbsp;<wbr style="color: #494949; font-family: simsun; background-color: #f4e6db;"><span style="color: #494949; font-family: simsun; background-color: #f4e6db;">&nbsp;程序集，对于C#程序员来说一定不陌生，不就是VS生成的那些exe,dll么。是的，程序集(.net中exe与dll的区别就是exe有程序接入口，即Main函数)就是.net框架下，可以被CLR加载并运行的一堆数据集(类似java中的jar包，无法脱离虚拟机自己运行)。它们和之前C\C++生成的可执行程序和动态链接库有本质的区别。</span><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" /><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" />&nbsp;<wbr style="color: #494949; font-family: simsun; background-color: #f4e6db;"><span style="color: #494949; font-family: simsun; background-color: #f4e6db;">&nbsp;说了半天，程序集里到底有什么呢。作为一堆数据集，程序集的数据可以分为：类型元数据，程序元数据，IL代码，资源。</span><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" /><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" />&nbsp;<wbr style="color: #494949; font-family: simsun; background-color: #f4e6db;"><span style="color: #494949; font-family: simsun; background-color: #f4e6db;">&nbsp;先说下什么是元数据，元数据一般就是指描述自身的数据。</span><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" /><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" />&nbsp;<wbr style="color: #494949; font-family: simsun; background-color: #f4e6db;"><span style="color: #494949; font-family: simsun; background-color: #f4e6db;">&nbsp;程序集元数据：包含程序集的版本信息，安全信息，签名等。</span><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" /><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" />&nbsp;<wbr style="color: #494949; font-family: simsun; background-color: #f4e6db;"><span style="color: #494949; font-family: simsun; background-color: #f4e6db;">&nbsp;类型元数据：记录了程序集将引用了哪些类，用户自定义了哪些类，字段，数据类型等一系列信息（VS的编程助手靠的就是反射获取类型元数据）。</span><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" /><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" />&nbsp;<wbr style="color: #494949; font-family: simsun; background-color: #f4e6db;"><span style="color: #494949; font-family: simsun; background-color: #f4e6db;">&nbsp;IL代码：MSIL，微软中间语言，微软跨语言的根基所在，所有的C#代码都编译成IL代码，保存在程序集中，在被CLR加载后，由JIT调用BCL,FTL即时编译成机器码来让CPU运行。</span><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" /><br style="color: #494949; font-family: simsun; background-color: #f4e6db;" />&nbsp;<wbr style="color: #494949; font-family: simsun; background-color: #f4e6db;"><span style="color: #494949; font-family: simsun; background-color: #f4e6db;">&nbsp;资源：图片，视频，音频不一而足。<br /><br /></span><div>原地址 http://blog.sina.com.cn/s/blog_7e0127220101blgd.html</div><img src ="http://www.cppblog.com/shadess/aggbug/211968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2015-10-08 19:39 <a href="http://www.cppblog.com/shadess/archive/2015/10/08/211968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>画线算法</title><link>http://www.cppblog.com/shadess/archive/2014/07/09/207591.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Wed, 09 Jul 2014 09:11:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2014/07/09/207591.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/207591.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2014/07/09/207591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/207591.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/207591.html</trackback:ping><description><![CDATA[<strong>DDA算法</strong><br />直线倾向的轴坐标每步加一, 另一个轴的坐标加上斜率, 得到的值取整, 作为像素的XY值<br />书上给的缺点是取整和浮点数运算很耗时<br /><br /><strong>Bresenham</strong><br />有点复杂<br />以 0&lt;斜率&lt;1 为例<br />f(x) = mx+b<br />X每步加一<br />分别算出可能取到的两个Y值与直线在这个点上的真正的取值的差, 即<br />DiffUpper : y[k+1] - m(x+1) - b<br />DiffLower : m(x+1) - b - y[k] ( 直线会从这个像素的上半部分穿过, 所以y值一定比像素中心点的y值大 )<br />再算出两个差值的差<br />DD = DiffLower - DiffUpper<br />这里谁减谁无所谓, 因为是靠这个值的符号来决定画哪个像素<br />到这里因为m是实数的原因, 运算还是浮点数, 为了消除浮点数, 在等式两端乘以deltaX, 即终点和起点的X差值<br />Sign[k] = (&nbsp;DiffLower - DiffUpper ) * deltaX<br />然后, 用Sign[k+1]减去Sign[k], 会得到一个整数的增量, 这个增量经计算会是一个与DD有关的整数<br />这样, 只要算出第一个点的Sign[0]再不断的加上这个增量, 就能算出下一个点的坐标了<br /><br />书上给的优点是可以只用整数运算就画出直线<br />据说可以画任意曲线, 稍微想了一下, 没想出来改进方法, 算了<br /><br /><img src ="http://www.cppblog.com/shadess/aggbug/207591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2014-07-09 17:11 <a href="http://www.cppblog.com/shadess/archive/2014/07/09/207591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>万向节死锁</title><link>http://www.cppblog.com/shadess/archive/2014/03/28/206375.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Fri, 28 Mar 2014 05:30:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2014/03/28/206375.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/206375.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2014/03/28/206375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/206375.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/206375.html</trackback:ping><description><![CDATA[<div>读此文笔记:<br />http://www.cnblogs.com/soroman/archive/2008/03/24/1118996.html<br /><br />所谓的万向节死锁, 是当某一个轴转到与另一轴重合或相反的方向之后, 转动的操作, 无法在原始数据上继续累加, 亦无法通过单纯的欧拉角的记录方式还原本次转动.<br /><br />按上文举的栗子. 假设有欧拉变换为[30, 90, 40], 完成后Z轴与负X轴重合<br />此时的任何转动, 都无法通过累加到原变换上的方式重现<br />比如此时绕X轴转1度, 可以想象Z轴将不再与负X轴重合, 但如果把这1度累加到原来的数据上, 变成[31, 90, 40]可以想象变换完以后Z轴还是与负X轴重合的.</div><img src ="http://www.cppblog.com/shadess/aggbug/206375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2014-03-28 13:30 <a href="http://www.cppblog.com/shadess/archive/2014/03/28/206375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android.mk .so文件输出目录 ( 编译完成后安装目录 )</title><link>http://www.cppblog.com/shadess/archive/2013/07/18/201940.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Thu, 18 Jul 2013 11:01:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2013/07/18/201940.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/201940.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2013/07/18/201940.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/201940.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/201940.html</trackback:ping><description><![CDATA[此文是介绍如何设置在NDK中编译完成后, SO文件的输出路径<br /><br />查了很多地方, 说的什么LOCAL_MODULE_PATH, 都是放屁, 一点用都没有<br /><br />其实要用这个宏&nbsp;NDK_APP_DST_DIR<br />注意路径的最后一定要是$(TARGET_ARCH_ABI)<br /><br />for example:<br /><div>NDK_APP_DST_DIR := ../../../libs/$(TARGET_ARCH_ABI)<br /><br />以上</div><img src ="http://www.cppblog.com/shadess/aggbug/201940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2013-07-18 19:01 <a href="http://www.cppblog.com/shadess/archive/2013/07/18/201940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++宏不支持嵌套</title><link>http://www.cppblog.com/shadess/archive/2012/07/09/182329.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Mon, 09 Jul 2012 05:42:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2012/07/09/182329.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/182329.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2012/07/09/182329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/182329.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/182329.html</trackback:ping><description><![CDATA[<div>#define&nbsp; fun(a) \<br />#ifdef NEST<br />&nbsp;&nbsp;&nbsp;function(a)<br />#endif<br /><br />以上是不行的, 只能这样<br /><br />#ifdef NEST<br />#define fun(a) function(a)<br />#endif</div><img src ="http://www.cppblog.com/shadess/aggbug/182329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2012-07-09 13:42 <a href="http://www.cppblog.com/shadess/archive/2012/07/09/182329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>texture mipmap bias ( LOD_BIAS )</title><link>http://www.cppblog.com/shadess/archive/2012/06/12/178510.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Tue, 12 Jun 2012 05:25:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2012/06/12/178510.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/178510.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2012/06/12/178510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/178510.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/178510.html</trackback:ping><description><![CDATA[<div>其实就是:<br /><br />当纹理需要缩小的时候, 会根据缩小的程度, 从MIPMAP中选择一层<br /><br />当选择MIPMAP层的时候, <br />如果LOD_BIAS小于零<br />&nbsp;&nbsp;&nbsp;分辨率更高的层"更容易"被选中&nbsp;&nbsp;&nbsp;//分辨率更高: 像素更多, 比例更大<br />如果LOD_BIAS大于零<br />&nbsp;&nbsp;&nbsp;分辨率更低的层"更容易"被选中</div><img src ="http://www.cppblog.com/shadess/aggbug/178510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2012-06-12 13:25 <a href="http://www.cppblog.com/shadess/archive/2012/06/12/178510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VirtualAllocEx </title><link>http://www.cppblog.com/shadess/archive/2012/04/10/170757.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Tue, 10 Apr 2012 03:43:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2012/04/10/170757.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/170757.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2012/04/10/170757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/170757.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/170757.html</trackback:ping><description><![CDATA[VirtualAllocEx针对进程ID分配了一段内存, 内存中的页有三种状态, 空闲, 保留 和 提交. <br /><br />在<strong>向其他程序的ListView控件发送LVM_GETITEMTEXT</strong>中直接把申请的内存(应该是一个单独的页)设为了COMMIT.<br /><br />WINDOWS的每个进程拥有4G的VAS(Virtual Address Space), 2G是与操作系统和其他进程共享的, 2G是独占的. <br /><br />通过: plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);<br />SendMessage(hwnd, LVM_GETITEMTEXT, (WPARAM)iItem, (LPARAM)plvitem);<br />这两句代码来看,&nbsp; plvitem的地址在当前进程和hProcess的进程中都可用, 也就是说应该是分配在了那2G共享的VAS中 <img src ="http://www.cppblog.com/shadess/aggbug/170757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2012-04-10 11:43 <a href="http://www.cppblog.com/shadess/archive/2012/04/10/170757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针和HWND</title><link>http://www.cppblog.com/shadess/archive/2012/04/08/170513.html</link><dc:creator>夜舞</dc:creator><author>夜舞</author><pubDate>Sun, 08 Apr 2012 14:46:00 GMT</pubDate><guid>http://www.cppblog.com/shadess/archive/2012/04/08/170513.html</guid><wfw:comment>http://www.cppblog.com/shadess/comments/170513.html</wfw:comment><comments>http://www.cppblog.com/shadess/archive/2012/04/08/170513.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadess/comments/commentRss/170513.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadess/services/trackbacks/170513.html</trackback:ping><description><![CDATA[今天试图通过FindWindow找到ListView后用ListView_GetItemText直接取出条目的文本, 结果失败报错, 内存不能写<br />原因是, ListView_GetItemText实际上是发了一个消息给List, LParam是LVItem的地址, 但是因为地址空间的问题, 在ListView所在的进程中, 传进去的那个地址是无效的. <br />而hwnd却可以通过消息传出, 也就是说hwnd是"跨进程全局"的. 记得以前总是疑问句柄和指针到底有什么区别, OK, 起码现在明白指针是进程内唯一, 而Hwnd句柄是系统内唯一<img src ="http://www.cppblog.com/shadess/aggbug/170513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadess/" target="_blank">夜舞</a> 2012-04-08 22:46 <a href="http://www.cppblog.com/shadess/archive/2012/04/08/170513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>