草庐IT

GL_HALF_FLOAT

全部标签

c++ - 如何将 float 变量分配给 unsigned int 变量,位图,而不是强制转换

我知道这样做很奇怪,而且不可移植。但是我有一个分配的无符号整数数组,我偶尔想在其中“存储”一个float。我不想转换float或将其转换为最接近的等效int;我想将float的精确位图存储在分配给unsignedint的空间中,这样我以后可以将它作为float检索,并且它会保留其原始float值。 最佳答案 这可以通过简单的复制来实现:uint32_tdst;floatsrc=get_float();char*constp=reinterpret_cast(&dst);std::copy(p,p+sizeof(float),rein

c++ - 将指针转换为 float ?

我有一个unsignedchar*。通常这指向一大块数据,但在某些情况下,指针是数据,即。将int值转换为unsignedchar*指针(unsignedchar*intData=(unsignedchar*)myInteger;),反之亦然。但是,我需要使用float值来执行此操作,但它一直给我转换错误。unsignedchar*data;floatmyFloat=(float)data;我该怎么做? 最佳答案 位播:templateinlineDestbit_cast(Sourceconst&source){static_ass

c++ - float转QString的格式

我想将float转换为QString,但将.替换为,。例如,我希望将float12.95转换为看起来像12,95的QString。我想我可以用类似的东西来做:QString().sprintf("%something",myFloat);但是我应该怎么写而不是%something呢?也许我可以这样做:QString::number(myFloat,'f').replace(".",",")但它不是很漂亮... 最佳答案 你试过了吗QLocale::toString()已经?以下代码应返回以逗号作为小数点分隔符的float:QLoca

c++ - 一个 "hack"来获取 float 模板参数工作编译但在 g++ 和 clang 上出现段错误

我知道whyIcan'tusefloatastemplateparameter以及如何设置模板类的staticconstfloat成员,这要归功于一对分子/分母。但我正在尝试另一个基于reinterpret_cast的“hack”,以从其IEEE754十六进制书写中“emule”float模板参数。这是一小段代码:#include#includetemplatestructMyStruct{staticconstfloatvalue;};templateconstfloatMyStruct::value=*reinterpret_cast(T);intmain(){typedefMyS

c++ - 写入 gl_FragDepth,同时仍然执行深度预测试

给定深度预渲染渲染器,我有给定片段可能包含的最小深度值-因此,考虑任何比指示更远的片段是没有意义的。现在,我有一个写入gl_FragDepth的着色器,但保证写入的值大于或等于其多边形面的深度值。我如何仍然执行深度预测试(即,如果片段深度比缓冲区值更远,则在不执行着色器的情况下丢弃),但允许我写入一个不同于(大于)插值面深度的值(如果它通过了预测试)测试? 最佳答案 从OpenGL4.2(GLSL4.20)开始,您正在寻找的功能可作为gl_FragDepth上的布局限定符使用。它允许您指定您将如何修改片段着色器中的深度输出的意图。例

c++ - IEEE 754 float ,< 1 的最大数是多少?

当使用IEEE754浮点表示法(c++中的double类型)时,非常接近(可表示)整数的数字将四舍五入到最接近的整数并精确表示。是真的吗?在四舍五入之前,一个数字必须与最接近的可表示整数到底有多接近?这个距离是常数吗?例如,如果1可以精确表示,那么小于1的最大double是多少? 最佳答案 WhenusingIEEE754floatingpointrepresentation(doubletypeinc++),numbersthatareverycloseto(representable)integersareroundedtoth

c++ - 有没有比添加 0.5f 和截断转换更直接的方法来将 float 转换为 int 并进行舍入?

在处理浮点数据的C++代码中,从float到int的舍入转换经常发生。例如,一种用途是生成转换表。考虑这个代码片段://ConvertapositivefloatvalueandroundtothenearestintegerintRoundedIntValue=(int)(FloatValue+0.5f);C/C++语言将(int)转换定义为截断,因此必须添加0.5f以确保向上舍入到最接近的正整数(当输入为正时)。对于以上,VS2015的编译器生成如下代码:movssxmm9,DWORDPTR__real@3f000000//0.5faddssxmm0,xmm9cvttss2siea

c++ - float 和 double (C++) 的实际最小/最大值是多少

我已阅读关于使用“FLT_MIN”和“FLT_MAX”值作为float的建议。每当我这样做时,codeblocks都会告诉我它的max:3.40282e+038min:1.17549e-038不知道这意味着什么我试图获得真正的值(value)并得到max:47.2498237715min:-34.8045265148...但是这些并没有澄清事情。这是我的代码片段charc;//reserve:1byte,store1character(-128to127)inti;//reserve:4bytes,store-2147483648to2147483657shortints;//rese

c++ - 为什么双引用值在分配给 C++ 中的 float 变量时不会改变

我试图理解将float分配给const引用double的概念,并且如果float值更新,double的值不会改变。floatd=2.0;constdouble&f=d;d=3.0;std::cout输出:32这背后的原因是什么。然而,当我们将引用变量设置为与其他变量相同的类型时,不会出现此问题。 最佳答案 Howeverthisissueisnotseenwhenwesetthereferencevariableasthesametypeastheothervariable这就是重点;您不能直接将引用绑定(bind)到不同类型的对象

C++ 将 float 转换为无符号字符?

我是C++的新手,并且做了一些谷歌搜索我认为sprintf可以完成这项工作,但是我在编译时遇到错误,我无法在unsigned之间进行转换char和一个char。我需要一个无符号字符,因为我要打印到一个图像文件(0-255RGB)。unsignedchar***pixels=newunsignedchar**[SIZE];vectorpixelColors;...sprintf(pixels[i][j][k],"%.4g",pixelColors.at(k));(pixelColors的大小为3,“k”指的是“for循环”变量) 最佳答案