小编pix*_*ist的帖子

如何检查glsl中的采样器是否为空?

我有一个带有_color制服和采样器的着色器.现在我只想在没有设置采样器的情况下使用_color进行绘制.有没有办法在着色器中找出我们的内容?(不幸的是,当未分配时,采样器返回1,1,1,1,这使得通过alpha混合它是不可能的)

opengl glsl

7
推荐指数
1
解决办法
5397
查看次数

单声道无法压缩?

我试图压缩像单声道这样的一些数据:

public static string Save(FlightProgram program, bool compressed)
{
    using (MemoryStream ms = new MemoryStream())
    {
        BinaryFormatter f = new BinaryFormatter();
        if (compressed)
        {
            using (DeflateStream gz = new DeflateStream(ms, CompressionMode.Compress))
            {
                f.Serialize(gz, program);
            }
        }
        else
        {
            f.Serialize(ms, program);
        }
        return Convert.ToBase64String(ms.ToArray()).Replace('/', '_');
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是得到异常"CreateZStream".没有内在的例外.这里发生了什么 ?

堆栈跟踪:

Could not save flight program: CreateZStream at   at (wrapper managed-to-native) System.IO.Compression.DeflateStream:CreateZStream (System.IO.Compression.CompressionMode,bool,System.IO.Compression.DeflateStream/UnmanagedReadOrWrite,intptr)
    at System.IO.Compression.DeflateStream..ctor (System.IO.Stream compressedStream, CompressionMode mode, Boolean leaveOpen, Boolean gzip) [0x00000] in <filename unknown>:0 
    at System.IO.Compression.DeflateStream..ctor (System.IO.Stream compressedStream, CompressionMode …
Run Code Online (Sandbox Code Playgroud)

c# mono deflatestream unity-game-engine

7
推荐指数
2
解决办法
3274
查看次数

libpng在png_read_info()上崩溃

我正试图在vs2013中使用libpng 1.2.10读取一个png文件.我下载了最新的zlib并编译了pnglib,效果很好.现在我正在尝试加载文件:

int *w = &width;
int *h = &height;
const char* name = file.c_str();
FILE *png_file = fopen(name, "rb");
if (!png_file)
{
    std::cerr << "Could not open " + file << std::endl;
    return;
}

unsigned char header[PNG_SIG_BYTES];

fread(header, 1, PNG_SIG_BYTES, png_file);
if (png_sig_cmp(header, 0, PNG_SIG_BYTES))
{
    std::cerr << "PNG signature fail " + file << std::endl;
    return;
}

png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if(png_ptr == NULL)
{
    std::cerr << "PNG read fail " + file << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ access-violation libpng

5
推荐指数
1
解决办法
3855
查看次数

JavascriptSerializer异常

我有以下数据:

{ "数据":{ "ID": "7IaWnXo", "标题":空, "说明":NULL, "日期时间":1397926970, "类型": "图像/ PNG", "动画片":假,"宽度"60," 高度 ":60," 大小 ":1277," 意见 ":0," 带宽 ":0," 最爱 ":假的," NSFW ":空," 节 ":空," deletehash": "KYIfVnHIWWTPifh", "链接": "http://i.imgur.com/7IaWnXo.png"}, "成功":真实的, "身份":200}

而我正在尝试将其序列化为:

public struct ImageInfoContainer
    {
        public ImageInfo data {get; set;}
        bool success { get; set; }
        string status { get; set; }
    }
    public struct ImageInfo
    {
        public string id {get; set;}
        public string title { get; set; }
        public string url { get; set; }
        public string …
Run Code Online (Sandbox Code Playgroud)

c# exception javascriptserializer

5
推荐指数
1
解决办法
8960
查看次数

四元数反向旋转?

所以我有一个将网格位置转换为全局空间的方法:

public Vector3 GridToGlobal(IVector3 gridPos)
{
 Vector3 globalPos = new Vector3(gridPos.x, gridPos.y, gridPos.z);
 globalPos *= Scale;
 globalPos = Container.transform.rotation * globalPos;
 return globalPos;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我想做相反的事情时,我该如何将向量旋转到网格空间中?

public IVector3 GlobalToGrid(Vector3 globalPos)
    {
        globalPos -= Container.transform.position;
        globalPos = Container.transform.rotation * globalPos; //this will obviously rotate in the wrong direction
        globalPos /= Scale;
        return new IVector3((int)Mathf.Round(globalPos.x), (int)Mathf.Round(globalPos.y), (int)Mathf.Round(globalPos.z));
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# reverse rotation quaternions unity-game-engine

5
推荐指数
1
解决办法
2万
查看次数

我应该使用指向OOP对象的指针还是应该创建默认构造函数?

我对c ++对象感到困惑.如果一个对象必须用参数初始化(大多数对象都这样做),我应该创建一个带参数的构造函数,因此在存储时总是创建指向我的对象的指针,或者我应该有一个带有Init()方法的空构造函数初始化对象所需的参数,以便我可以为我的对象设置非指针字段?

编辑:我的意思是:

//A.h
class A
{
    public:
        A(int x);
}
//B.h
class B
{
    private:
        A myobject;
}
Run Code Online (Sandbox Code Playgroud)

将抛出IntelliSense:类"A"不存在默认构造函数

所以我可以这样做:

//B.h
class B
{
 private:
  A* myobject;
}
Run Code Online (Sandbox Code Playgroud)

要么

//A.h

class A
{
 public:
  A(void);
  void Init(int x);
}
Run Code Online (Sandbox Code Playgroud)

哪一个是正确的做法?

c++ oop default-constructor

3
推荐指数
1
解决办法
119
查看次数

我可以在WebGL的GLSL中用作数组索引吗?

是否只允许使用常量,或者我可以将其用于循环索引或任何其他动态值?

arrays indexing glsl webgl

3
推荐指数
1
解决办法
1714
查看次数

如何让 texelFetchOffset 环绕?

我像这样创建纹理:

this->width = width;
this->height = height;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);

glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

switch (components) {
    case 1: glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, width, height, 0, GL_RED, GL_HALF_FLOAT, 0); break;
    case 2: glTexImage2D(GL_TEXTURE_2D, 0, GL_RG16F, width, height, 0, GL_RG, GL_HALF_FLOAT, 0); break;
    case 3: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, width, height, 0, GL_RGB, GL_HALF_FLOAT, 0); break;
    case 4: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, width, height, 0, GL_RGBA, GL_HALF_FLOAT, 0); break;
    default: Log::Write("Unknown …
Run Code Online (Sandbox Code Playgroud)

opengl

2
推荐指数
1
解决办法
784
查看次数

尝试创建多采样帧缓冲区时获取FramebufferIncompleteMultisample

我使用以下代码创建纹理+帧缓冲区(在C#中使用openTK):

    public void Create(int width, int height, SurfaceFormat format)
    {
        bool multisample = format.Multisample > 1;
        int samples = Math.Max(1, Math.Min(format.Multisample, 4));
        TextureTarget target = multisample ? TextureTarget.Texture2DMultisample : TextureTarget.Texture2D;
        Width = width;
        Height = height;
        textureHandle = GL.GenTexture();
        //bind texture

        GL.BindTexture(target, textureHandle);
        Log.Error("Bound Texture: " + GL.GetError());
        GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);
        GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
        GL.TexParameter(target, TextureParameterName.TextureWrapS, (int)format.WrapMode);
        GL.TexParameter(target, TextureParameterName.TextureWrapT, (int)format.WrapMode);

        Log.Error("Created Texture Parameters: " + GL.GetError());
        if (format.Multisample < 2)
            GL.TexImage2D(target, 0, format.InternalFormat, Width, Height, 0, format.PixelFormat, format.SourceType, format.Pixels);
        else …
Run Code Online (Sandbox Code Playgroud)

opengl multisampling framebuffer opentk

2
推荐指数
1
解决办法
609
查看次数

结构不可分配?

我有一个结构:

struct Handle 
{
public:
    const unsigned long Id;
    const std::type_index Index;
    Handle() : Id(-1), Index(std::type_index(typeid(Event))){}
    Handle(unsigned long id, std::type_index index) : Id(id), Index(index) {}
};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将它分配给我得到的变量时

错误10错误C2582:'eventHandler :: Handle'中的'operator ='函数不可用

为什么?(我正在使用结构,因为据我所知,它们作为数据类型处理,可以从函数返回而不用new创建.这是正确的吗?)

c++ struct assign

1
推荐指数
1
解决办法
305
查看次数