草庐IT

GL_FLOAT

全部标签

c++ - 比较 float 0

如果foo是float类型,下面的表达式是否有效/推荐?(0.0f==foo*float(0))无论foo的值如何,它都会具有预期的(数学)值吗?C++标准是定义行为还是特定于实现? 最佳答案 好吧,首先这并不是真正的C++标准问题。相反,问题在于您的浮点模型标准(很可能是IEEE)。对于IEEEfloat,这可能是安全的,因为float(0)应该得到与0.0f相同的数字,并且乘以任何其他数字也应该是0.0f。真正不安全的是进行其他浮点运算(例如:用非整数进行加减)并根据0.0f检查它们。

c++ - HLSL:SV_Position,为什么/如何从 float3 到 float4?

我刚刚开始学习着色器/hlsl等,所以请原谅这个可能很愚蠢的问题。我正在学习Microsoft的DirectX教程(Tutorial(link)、Code(link))。据我了解,他们将POSITION定义为浮点值的3元素数组://DefinetheinputlayoutD3D11_INPUT_ELEMENT_DESClayout[]={{"POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0},{"COLOR",0,DXGI_FORMAT_R32G32B32A32_FLOAT,0,12,D3

c++ - 使用 float 给出 "call to overloaded function is ambiguous"错误

这个问题在这里已经有了答案:Referencetofunctionisambiguous[duplicate](2个答案)关闭6年前。我正在重载函数add(),但是当我使用float数据类型时它显示错误。但是,当我将其更改为double时,它工作正常。为什么float会导致错误?代码是:#includeusingnamespacestd;classstudents{private:inti;floatf;public:voidadd(intb){i=b;cout错误:Infunction'intmain()':[Error]callofoverloaded'add(double)'is

c++ - 有没有更好的方法在 C++ 中用 n 位小数舍入 float ?

我知道常见的方法是乘以10^n,然后除以10^n。roundafloatwithonedigitnumber但是由于double精度问题,我发现上面的解决方案并不完全适用于我的情况:0.965*0.9=0.8685std::round(0.8685*1000)/1000=0.869//expectsittobe0.869std::round(0.965*0.9*1000)/1000=0.868如果我想直接从std::round(0.965*0.9*1000)/1000得到0.869,我必须把语句改成std::round((0.965*0.9+std::numeric_limits::e

c++ - Opengl GL_QUADS 产生错误 0x506

我在OpenGL中有一些代码可以将YUV图像渲染到OpenGL视口(viewport)上。该程序在nvidia卡上运行时没有问题,但在IntelHD3000上运行时会产生错误,遗憾的是它是目标机器。代码中标记了产生错误的位置。着色器程序是//VertexShader#version120voidmain(){gl_TexCoord[0]=gl_MultiTexCoord0;gl_Position=gl_ModelViewProjectionMatrix*gl_Vertex;}//fragmentshader#version120uniformsampler2DtexY;uniforms

c++ - 某些 GL 函数的好奇 "void*"参数

对于OpenGL中的某些函数,必须为步长指定一个字节偏移量,例如在glVertexAttribPointer()中。起初我会猜测它会是一个像整数一样的普通数值。但经过检查,我意识到它需要转换为void*(更具体地说是GLvoid*)。我的问题是:void*的预期含义是什么,为什么必须将它用于字节偏移量? 最佳答案 glVertexAttribPointer()是VertexBufferObjects之前的一个旧函数。在VBO之前,您的顶点数据将存储在客户端数组中,您需要在绘制之前将指向数据的指针传递给OpenGL。当VBO出现时,他

vue3.0 使用echarts与echarts-gl 实现3D饼图

echarts与echarts-gl实现3D饼图实现效果:实现步骤1、安装echartsnpminstallechartsnpminstallecharts-gl2、页面定义容器3、js中引入echartsimport*asechartsfrom'echarts'import'echarts-gl'VUE组件完整源码:import*asechartsfrom'echarts'import'echarts-gl'import{onMounted,toRefs,ref,reactive}from'vue'exportdefault{setup(){letstate=reactive({xAxisD

c++ - 当没有 float 数据类型时,为什么这段代码会出现浮点异常?

我没有除以零并且我的代码中没有float据类型,我仍然得到浮点异常。#include#include#include#include#includeusingnamespacestd;intmain(){unsignedlonglongintt,n;cin>>t;while(t--){cin>>n;unsignedlonglongintdeno=pow(10,n-1),count=2,sum=0,f1=1,f2=1;while(1){sum=f1+f2;f1=f2;f2=sum;count++;if((int)(sum/deno)>0){cout所有之前关于相同的问题都有类似的除以零的

c++ - 从 C++ std::vector<float> 转换为 Rust Vec<f32> 的最佳方法是什么?

我写了一个测试程序来检查数据是否会在Rust上正确读取。C++代码:std::vectorvec;vec.push_back(10);vec.push_back(20);std::cout防rust代码:#[no_mangle]pubextern"C"fnget_len(vec:*constVec)->i32{letvec=unsafe{&*vec};vec.len()asi32}我的输出看起来像这样并且总是不同的:lenis603268424 最佳答案 需要知道的一件事是C++不允许放弃数据vector的所有权。这是C++设计的局

c++ - 如何使用 _mm_extract_ps SSE GCC instrinc 函数将十六进制 float 转换为 C/C++ 中的 float

我正在为二维卷积编写SSE代码,但SSE文档非常稀少。我正在使用_mm_dp_ps计算点积并使用_mm_extract_ps获得点积结果,但是_mm_extract_ps返回一个十六进制float,我不知道如何将这个十六进制float转换为常规float。我可以使用__builtin_ia32_vec_ext_v4sf返回一个float但我想保持与其他编译器的兼容性。_mm_extract_ps(__m128__X,constint__N){union{inti;floatf;}__tmp;__tmp.f=__builtin_ia32_vec_ext_v4sf((__v4sf)__X,